Fehlende Zweige bei der Verwendung von assertTrue statt assertNull

In Java/Junit, ich brauche, um auf null zu testen mit einem Objekt. Es gibt eine Vielzahl von Möglichkeiten, die ich testen eine Bedingung, aber ich war mit assertTrue für die meisten meiner tests. Wenn ich für null-Werte in einer assertTrue, EclEmma fest, dass es die Tests nur einen Zweig.

Beheben, wenn ich die Anweisung in eine variable manuell ein (wie die Einstellung das Ergebnis in ein boolean und übergeben es in assertTrue) die code-coverage wird als vollständig auf die geltend machen, nicht aber auf die variable initialisieren Linie.

Warum ist das passiert? Ist das mit der extra-byte-code, Java-scheinbar fügt, wie erwähnt auf http://sourceforge.net/apps/trac/eclemma/wiki/FilteringOptions? Alle Lösungen (außer mit anderen assert-Anweisungen).

assertTrue:

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

assertTrue:

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

assertNull:

assertNull( myObject ) //complete;
Was ist falsch mit der Durchsetzung von null-durch die Verwendung assertNull? Es ist normalerweise besser, verwenden Sie die entsprechende assert-Typ für das, was geltend gemacht wird. Sie sehen besser, was falsch ist, wenn der test fehlschlägt, ohne zu Graben zu viel in den test-code.
Das ist wahr, und ich habe kein problem mit assertNull, wenn es eine Voraussetzung ist, jedoch, IMO, behaupten, dass die "Typen" sind nur eine andere form von assertTrue. Es kann Hinzugefügt werden, nutzen, um mit verschiedenen assert-Typen Hinzugefügt-Fehler info/Lesbarkeit aber das ist nicht wirklich ein Problem hier.
Das ist nicht zu sagen, dass ich mich weigere, Sie zu verwenden, assertNull und wahrscheinlich werden Sie es, ich fand gerade dieses problem interessant, wie ich bin grundsätzlich der Prüfung für die gleiche Sache, aber Emma gibt völlig unterschiedliche Ergebnisse.
Warum sind Sie mit der code-coverage auf Ihrem test-code? Ich glaube nicht, dass jemand kümmern sollte, wenn alle Ihre test-code Zweige werden getestet; das scheint mir albern.
Das zugrunde liegende Problem nicht in Zusammenhang mit Laufenden Berichterstattung an den test-code, und die sich nicht auf die Verwendung von assertNull versus assertTrue.

InformationsquelleAutor Dalin Seivewright | 2012-04-13

Schreibe einen Kommentar