Brakujące gałęzie podczas używania assertTrue zamiast assertNull

W Javie / Junit muszę przetestować wartość null z jakimś obiektem. Jest wiele sposobów na przetestowanie warunku, ale używam assertTrue do większości moich testów. Kiedy sprawdzam null w assertTrue, EclEmma stwierdza, że ​​testuje tylko jedną gałąź.

Kiedy rozdzielam instrukcję na zmienną ręcznie (np. Ustawiając wynik na wartość logiczną i przekazując go do assertTrue), pokrycie kodu jest uznawane za zakończone na asercie, ale nie na linii inicjalizującej zmienną.

Dlaczego to się dzieje? Czy jest to związane z dodatkowym kodem bajtowym, który Java najwyraźniej dodaje, jak wspomniano powyżejhttp://sourceforge.net/apps/trac/eclemma/wiki/FilteringOptions? Wszelkie rozwiązania (oprócz używania innych instrukcji assert).

assertTrue:

<code>assertTrue( myObject == null ); //1 of 2 branches
</code>

assertTrue:

<code>boolean test = (myObject == null); //1 of 2 branches missing
assertTrue(test); // complete
</code>

assertNull:

<code>assertNull( myObject ) //complete;
</code>

questionAnswers(3)

yourAnswerToTheQuestion