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>