/ / Je analýza nulovej kontroly Eclipse zmätená „zlyhaním“ JUnita? - java, zatmenie, junit

Je analýza null Check Eclipse zmätená zlyhaním JUnit? java, zatmenie, junit

Mám nasledujúci kód:

Object foo = someMethod();
if (foo == null)
org.junit.Assert.fail("OMG what a horrible error!");
foo.doSomeStuff();

Zdá sa však, že Eclipse (Neon, M4.6) to nedokáže zistiť org.junit.Assert.fail metóda ukončí proces vykonávania a sťažuje sa, že posledný riadok obsahuje možný NPE, ktorý neobsahuje.

Je to chyba alebo ju nesprávne používam?

odpovede:

2 pre odpoveď č. 1

Eclipse má zabudovaný zoznam niekoľkých metód, o ktorých vie, že sa nevrátia. Toto zahŕňa JUnit assertNotNull ale nezahŕňa fail.

Eclise bug 382069 popisuje túto podporu.


1 pre odpoveď č. 2

Ako to má Eclipse vedieť? Pokiaľ ide o to, jedná sa iba o ďalšie volanie knižnice.

Ak ho použijete takto, malo by fungovať bez výnimky NullPointerException:

Object foo = someMethod();
if (foo == null) {
org.junit.Assert.fail("Jesus Christ what a horrible error!");
} else {
foo.doSomeStuff();
}

1 pre odpoveď č. 3

Ak by služba Assert.fail () nevyhodila výnimku, mali by ste NPE. Ale prečo by to Eclipse / Java vedelo.

Btw, je lepšie použiť assertNotNull, takže si to napriek tomu nevyrieši ...