Frage

Ich zitiere diesen Beitrag von exubero der Eintrag. Ich denke, dass dieser Eintrag profitieren alle, die ein Unit-Test tut:

Es gibt eine große Anzahl verschiedenen Verfahren mit assert in JUnit Assert-Klasse definiert beginnen. Jede dieser Methoden hat leicht unterschiedliche Argumente und Semantik über das, was sie behaupten.

Im Folgenden werden einige unregelmäßige Verwendungen von assertTrue:

assertTrue("Objects must be the same", expected == actual);
assertTrue("Objects must be equal", expected.equals(actual));
assertTrue("Object must be null", actual == null);
assertTrue("Object must not be null", actual != null);

Einige Unit-Test-Experten darauf hingewiesen, dass die oben genannten Code besser als geschrieben werden:

assertSame("Objects must be the same", expected, actual);
assertEquals("Objects must be equal", expected, actual);
assertNull("Object must be null", actual);
assertNotNull("Object must not be null", actual);

Einer der Vorteile von den entsprechenden ‚assertXXX ()‘ verwendet, wird die Lesbarkeit des Unit-Test zu erhöhen. Kann jemand darauf hinweisen, was anderen Nutzen von dem entsprechend ‚assertXXX ()‘ verwendet?

War es hilfreich?

Lösung

Ich bin kein Java-Entwickler und ich weiß nicht, was JUnit ausgibt, wenn eine Behauptung fehlschlägt. Viele Einheit Test-Frameworks, die ich habe mit Ausgabe bessere Fehlerinformationen, wenn die Verwendung so etwas wie assertEquals.

Lassen Sie mich Ihnen ein Beispiel, was ich rede:

assertTrue("Objects must be equal", "One" == "Two");
assertEquals("Objects must be equal", "One", "Two");

Im ersten Fall können Sie einen Fehlerausgang wie folgt aussehen:

Fehler:. Erwartete wahr tatsächlichen war false

Ausgabe für den zweiten Fall:

Fehler:. Exected "One" tatsächlich war "Two"

Wie Sie der zweite Fall besser aussagekräftigere Informationen zu sehen gibt.

Andere Tipps

Zusätzlich zu dem, was @Vadim oben daid, die richtige assert mit gegen Fehler durch Cut-Copy-Paste von Tests erstellt schützen kann.

Als Beispiel

assertTrue("Objects must not be the same", expected != actual);

wird dann kopiert und modifiziert

assertTrue("Objects must not be the same", newobject == actual);

Wenn die Änderungen am Code und dieser Test fehlschlägt und der Kommentar täuscht den nächsten Entwickler zu „reparieren“, um den Code in eine Weise, die einen neuen Fehler einführt.

Wenn der Schnitt-Copy-Paste-Code war so etwas wie folgt aus:

assertFalse("Objects must be the same", newobject == actual);

Die dis-Kongruenz des Kommentars, die Behauptung und der Testfall leichter bemerkt werden kann.

Und ja, habe ich gesehen, dies geschieht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top