JUnit Test mit dynamischer Anzahl von Tests
In unserem Projekt habe ich mehrere JUnit tests, z.B. nehmen Sie jede Datei aus einem Verzeichnis, und führen Sie einen test auf Sie zu. Wenn ich das implementieren einer testEveryFileInDirectory
Methode in der TestCase
zeigt sich als nur eine Prüfung, die vielleicht gelingt oder nicht. Aber ich bin daran interessiert, die Ergebnisse auf jede einzelne Datei. Wie kann ich schreiben Sie eine TestCase
/TestSuite
so, dass jede Datei zeigt, wie ein separater test z.B. in der graphischen TestRunner von Eclipse? (Codierung eine explizite test-Methode für jede Datei ist keine option.)
Vergleichen auch die Frage ParameterizedTest mit einem Namen in der Eclipse-Testrunner.
InformationsquelleAutor der Frage Hans-Peter Störr | 2008-12-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Werfen Sie einen Blick auf Parametrisierte Tests in JUnit 4.
Eigentlich wollte ich vor ein paar Tagen. Ich werde versuchen zu erklären ...
Zuerst bauen Sie Ihre test-Klasse ganz normal, so wie du, wo nur Tests mit einer Eingabe-Datei.
Dekorieren Sie Ihre Klasse mit:
Erstellen Sie einen Konstruktor, der den input, das wird sich ändern in jedem test Anruf (in diesem Fall kann es sein, die Datei selbst)
Erstellen Sie dann eine statische Methode, die zurück
Collection
des arrays. Jedes array in die Sammlung enthält die input-Argumente für Ihre Klasse Konstruktor z.B. die Datei. Dekorieren Sie diese Methode mit:Hier ist eine Beispiel-Klasse.
Überprüfen Sie auch diese Beispiel
InformationsquelleAutor der Antwort bruno conde
JUnit 3
JUnit 4
InformationsquelleAutor der Antwort McDowell
JUnit 5
JUnit-5 unterstützt dies durch die Vorstellung von einem
DynamicTest
die generiert werden, in einer@TestFactory
mittels der statischen MethodedynamicTest
.Dem ausführen der tests in der IDE (IntelliJ hier) werden folgendermaßen angezeigt:
InformationsquelleAutor der Antwort avandeursen
Sollte möglich sein, in JUnit 3 durch Erben von
TestSuite
und überschreiben dertests()
Methode, um eine Liste der Dateien und für jede Rückgabe eine Instanz einer Unterklasse vonTestCase
nimmt den Dateinamen als parameter des Konstruktors und hat eine test-Methode, die tests der Datei im Konstruktor.In JUnit 4 ist es vielleicht auch einfacher.
InformationsquelleAutor der Antwort Michael Borgwardt
Könnte man erwägen,JUnitParams Bibliothekso hätte man ein paar mehr (sauberer) Optionen:
Können Sie mehr sehen,Beispiele der Verwendung hier.
Zusätzlich über JUnitParams, warum schreiben parametrisierte tests mit ist es einfacher und besser lesbar:
InformationsquelleAutor der Antwort falsarella
Wenn TestNG ist eine option, die Sie nutzen könnten Parameter mit DataProviders.
Jede einzelne Datei testen, wird deren Ergebnis angezeigt, in der text-basierten Berichts-oder Eclipse-TestNG-plugin UI. Die Anzahl der tests wird, zählt jede Ihrer Dateien einzeln.
Dieses Verhalten unterscheidet sich von JUnit Theorienin dem alle Ergebnisse werden in einen Topf geworfen, unter einem "Theorie" - Eintrag und zählen nur als 1-test. Wenn Sie möchten, separate Ergebnis-reporting in JUnit, können Sie versuchen,Parametrisierte Tests.
Test-und Eingänge
Beispiel für die Ausgabe
InformationsquelleAutor der Antwort Ben Hutchison
Ich hatte ein ähnliches problem und endete schreiben eines einfachen JUnit 4-runner ermöglicht die med-dynamische Erzeugung von tests.
https://github.com/kimble/junit-test-factory
InformationsquelleAutor der Antwort Kimble