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ď č. 1Eclipse 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 ...