Ich benutze Mockito in einem Junit-Test. Wie kann man eine Ausnahme auslösen und dann behaupten, dass sie vorliegt (generischer Pseudocode)?
java
exception-handling
junit
mockito
Paketüberfluss
quelle
quelle
caughtException
?com.googlecode.catchexception.CatchException.caughtException;
Um Ihre zweite Frage zuerst zu beantworten. Wenn Sie JUnit 4 verwenden, können Sie Ihren Test mit Anmerkungen versehen
zu behaupten, dass eine Ausnahme aufgetreten ist. Und um eine Ausnahme mit Mockito zu "verspotten", verwenden Sie
quelle
Wenn Sie auch die Ausnahmemeldung testen möchten, können Sie die ExpectedException von JUnit mit Mockito verwenden:
quelle
given()
woher kommt das?Aktualisierte Antwort für den 19.06.2015 (wenn Sie Java 8 verwenden)
Verwenden Sie einfach assertj
Verwenden von assertj-core-3.0.0 + Java 8 Lambdas
Referenz: http://blog.codeleak.pl/2015/04/junit-testing-exceptions-with-java-8.html
quelle
Wenn Sie JUnit 4 und Mockito 1.10.x verwenden, kommentieren Sie Ihre Testmethode mit:
und um Ihre gewünschte Ausnahme zu werfen, verwenden Sie:
quelle
Machen Sie die Ausnahme so:
Stellen Sie sicher, dass dies geschehen ist, indem Sie behaupten, dass Ihr Test eine solche Ausnahme auslöst:
Oder durch normale Scheinüberprüfung:
Die letztere Option ist erforderlich, wenn Ihr Test beweisen soll, dass Zwischencode die Ausnahme behandelt (dh die Ausnahme wird von Ihrer Testmethode nicht ausgelöst).
quelle
verify
Aufruf die Ausnahme?when
Klausel ist korrekt, muss sie eine Ausnahme ausgelöst haben.Verwenden Sie Mockitos doThrow und fangen Sie dann die gewünschte Ausnahme ab, um zu bestätigen, dass sie später ausgelöst wurde.
quelle
Mit mockito können Sie die Ausnahme auslösen.
when(testingClassObj.testSomeMethod).thenThrow(new CustomException());
Junit5 verwenden, können Sie Ausnahme geltend machen, behauptet , ob die Ausnahme ausgelöst wird , wenn Verfahren Prüfung aufgerufen wird.
Hier finden Sie ein Beispiel: Assert Exception Junit
quelle
Unabhängig von Mockito kann man die Ausnahme abfangen und ihre Eigenschaften geltend machen. Um zu überprüfen, ob die Ausnahme aufgetreten ist, setzen Sie nach der Anweisung, die die Ausnahme auslöst, eine falsche Bedingung im try-Block.
quelle
Oder wenn Ihre Ausnahme vom Konstruktor einer Klasse ausgelöst wird:
quelle
Durch Ausnahmemeldung bestätigen:
quelle