Was ist die tatsächliche Verwendung von 'fail' im JUnit-Testfall?
java
unit-testing
junit
junit4
Sanju
quelle
quelle
Angenommen, Sie schreiben einen Testfall für einen -ve-Flow, bei dem der zu testende Code eine Ausnahme auslösen soll
quelle
Ich denke, der übliche Anwendungsfall besteht darin, es aufzurufen, wenn in einem negativen Test keine Ausnahme ausgelöst wurde.
So etwas wie der folgende Pseudocode:
quelle
Ich habe es für den Fall verwendet, dass bei meiner @ Before-Methode etwas schief gelaufen ist.
quelle
@Before
Methode erfolgreich war, ist es wahrscheinlich besser, sie direkt in dieser Methode zu überprüfen. Als Bonus melden mindestens JUnit und TestNG sogar einen anderen Fehler für Fehler von@Before
/@After
Methoden, sodass festgestellt werden kann, dass das Problem nicht im Test selbst enthalten war.So verwende ich die Fail-Methode.
Es gibt drei Zustände, in denen Ihr Testfall enden kann
beabsichtigt (im Gegensatz zu negativen Testfällen, bei denen eine Ausnahme erwartet wird).
Wenn Sie Eclipse verwenden, werden drei Zustände durch eine grüne, blaue und rote Markierung angezeigt.
Ich verwende die Fehleroperation für das dritte Szenario.
Beispiel: public Integer add (Ganzzahl a, Ganzzahl b) {Neue Ganzzahl zurückgeben (a.intValue () + b.intValue ())}
quelle
fail()
.Ich benutze
fail()
zum Beispiel, um Tests anzuzeigen, die noch nicht abgeschlossen sind (es passiert); Andernfalls würden sie sich als erfolgreich erweisen.Dies liegt möglicherweise daran, dass mir keine unvollständige () Funktionalität bekannt ist, die in NUnit vorhanden ist.
quelle
In gleichzeitigen und / oder asynchronen Einstellungen möchten Sie möglicherweise überprüfen, ob bestimmte Methoden (z. B. Delegaten, Ereignis-Listener, Antworthandler, wie Sie es nennen) nicht aufgerufen werden. Abgesehen von spöttischen Frameworks können Sie
fail()
diese Methoden aufrufen , um die Tests nicht zu bestehen. Abgelaufene Zeitüberschreitungen sind in solchen Szenarien eine weitere natürliche Fehlerbedingung.Beispielsweise:
quelle
Der wichtigste Anwendungsfall ist wahrscheinlich die Ausnahmeprüfung.
Während junit4 das erwartete Element enthält, um zu überprüfen, ob eine Ausnahme aufgetreten ist, scheint es nicht Teil des neueren junit5 zu sein. Ein weiterer Vorteil der Verwendung
fail()
gegenüberexpected
ist, dass Sie es mitfinally
der Bereinigung von Testfällen kombinieren können .Wie in einem anderen Kommentar erwähnt. Es klingt auch vernünftig, wenn ein Test fehlschlägt, bis Sie die Implementierung abgeschlossen haben.
quelle