Fehlende Zweige bei Verwendung von assertTrue anstelle von assertNull
In Java / Junit muss ich mit einem Objekt auf null testen. Es gibt verschiedene Möglichkeiten, wie ich eine Bedingung testen kann, aber ich habe assertTrue für die meisten meiner Tests verwendet. Wenn ich in einem assertTrue nach Nullen suche, gibt EclEmma an, dass nur ein Zweig getestet wird.
Wenn ich die Anweisung manuell in eine Variable auflöse (wie das Setzen des Ergebnisses auf einen Booleschen Wert und die Übergabe an assertTrue), wird die Codeabdeckung in der assert-Zeile als vollständig betrachtet, jedoch nicht in der Initialisierungszeile für Variablen.
Warum passiert dies? Bezieht sich dies auf den zusätzlichen Bytecode, den Java anscheinend hinzufügt, wie oben erwähnthttp://sourceforge.net/apps/trac/eclemma/wiki/FilteringOptions? Alle Lösungen (außer der Verwendung anderer Behauptungsanweisungen).
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>