JUnit 5: Wie wird eine Ausnahme ausgelöst?
Gibt es einen besseren Weg zu behaupten, dass eine Methode eine exception wirft in JUnit 5?
Derzeit, ich habe mit einer @ - Regel, um zu überprüfen, ob meine test wirft eine exception, aber das funktioniert nicht für die Fälle, in denen ich erwarte, dass mehrere Methoden zum auslösen von Ausnahmen in meinem test.
InformationsquelleAutor der Frage steventrouble | 2016-10-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie
assertThrows()
die können Sie testen, mehrere Ausnahmen im gleichen test. Mit Unterstützung für Lambda-Ausdrücke in Java 8, das ist wahrscheinlich werde der übliche Weg, um test für Ausnahmen in JUnit.Pro die JUnit-docs:
InformationsquelleAutor der Antwort steventrouble
In Java 8 und JUnit-5 (Jupiter) können wir behaupten Ausnahmen wie folgt.
Mit
org.junit.jupiter.api.Assertions.assertThrows
Diesem Ansatz werden die Funktionalen Schnittstelle
Executable
imorg.junit.jupiter.api
.Finden :
InformationsquelleAutor der Antwort prime
Haben Sie es geändert in JUnit-5 (erwartet: InvalidArgumentException, aktuell: aufgerufene Methode) und der code sieht wie folgt aus:
InformationsquelleAutor der Antwort jstar
Nun Junit5 bietet eine Möglichkeit zur Geltendmachung der Ausnahmen
Können Sie testen, sowohl auf Allgemeine Ausnahmen und individuelle Ausnahmen
Eine Allgemeine Ausnahme Szenario:
ExpectGeneralException.java
ExpectGeneralExceptionTest.java
Finden Sie eine Probe, um zu testen CustomException hier : assert-exception code Beispiel
ExpectCustomException.java
ExpectCustomExceptionTest.java
InformationsquelleAutor der Antwort Anupama Boorlagadda
Ich denke, das ist ein noch einfacheres Beispiel
Aufrufen
get()
auf eine optional mit einem leerenArrayList
werfen wirdNoSuchElementException
.assertThrows
erklärt die erwartete Ausnahme und bietet ein lambda-Lieferant (nimmt keine Argumente und gibt einen Wert zurück).Dank @prime für seine Antwort, die ich hoffentlich erarbeitet.
InformationsquelleAutor der Antwort JesseBoyd
Können Sie
assertThrows()
. Mein Beispiel stammt aus der Dokumentation http://junit.org/junit5/docs/current/user-guide/InformationsquelleAutor der Antwort Will Humphreys
Eigentlich denke ich, es ist ein Fehler in der Dokumentation für dieses Beispiel. Die Methode, die vorgesehen ist, expectThrows
InformationsquelleAutor der Antwort Peter Isberg
Hier ist ein einfacher Weg.
Es gelingt nur, wenn der Ausnahme, die Sie erwarten, ist geworfen.
InformationsquelleAutor der Antwort kiwicomb123