Ausschluss einer non param test in parametrisierten test-Klasse
Gibt es eine Anmerkung in JUnit auszuschließen non param test in parametrisierten test-Klasse?
Nein, gibt es nicht.
Was ist die Absicht? wo erwarten Sie @ - Parameter verwenden, die in den test-Fall?
Was ist die Absicht? wo erwarten Sie @ - Parameter verwenden, die in den test-Fall?
InformationsquelleAutor user405516 | 2010-07-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
JUnit 5
Als der Junit-5.0.0 können Sie jetzt Anmerkungen in Ihren test-Methoden mit
@ParameterizedTest
. So dass keine Notwendigkeit für innere Klassen. Es gibt viele Möglichkeiten, liefern die Argumente, um die parametrisierten test abgesehen von ValueSource wie unten gezeigt. Finden Sie die offizielle junit-Benutzerhandbuch details:JUnit 4
Wenn Sie noch mit Junit 4 (ich habe das getestet mit v4.8.2) verwenden Sie die Beiliegenden Läufer in Verbindung mit inneren Klassen und die Parametrisierte Läufer:
Schöne Lösung, jedoch führt es den test zweimal! Die Enclosed.class ist eine Erweiterung der Suite.class die Ursachen all-Suite-zweimal ausgeführt, anstatt die Anzahl der Parameter in diesem Fall.
Ich Tat das gleiche. Aber ich will das
nonParametrized
testen, führen nur nachParametrized
lieben. Konnte nicht machen es auf diese Weise. Ich habe versuchtFixMethodOrder
zu.Fantastische Lösung. Danke!
InformationsquelleAutor Matthew Madson
Ich gerade herausgefunden die man nutzen kann,JUnitParams.
Ich konvertiert eine von meinen tests, jetzt zu verwenden, und es funktioniert wunderbar.
Nette Sammlung, ich Liebe es mit gemischten parametrisierte tests.
InformationsquelleAutor AmanicA
Nicht. Die beste Praxis ist, sich zu bewegen, als die nicht-parametrisierten tests in eine andere Klasse (.java-Datei)
Hast du irgendeine Begründung für diese Behauptung? Dies würde bedeuten, dass eine bestimmte Klasse haben tests in zwei verschiedenen test-Klassen, die auch kommt mir wie eine schlechte Idee.
Ich sehe nicht, warum es eine schlechte Idee ist, tests in zwei verschiedenen Klassen. Ich habe getan, dass für einige Klassen auch ohne parametrisierten tests. Zum Beispiel Foo_SecurityTest, Foo_BusinessLogicTest.
InformationsquelleAutor Jeanne Boyarsky
Zohhak test runner ist ein einfacher Weg, um das parametrisieren von spezifischen tests.
Danke Piotr!
InformationsquelleAutor AmanicA
War ich in der Lage, etwas zu tun, sehr ähnlich wie Matthew Madson Antwort und fand es nützlich, um eine Basis-Klasse zu Kapseln, setup-und Allgemeine Hilfsfunktionen zwischen den Einzel-und param-tests. Dies funktioniert ohne die Verwendung Enclosed.class.
@RunWith(Suite.class)
und@SuiteClasses({ ComponentTest.ComponentParamTests.class, ComponentTest.ComponentParamTests.class })
machen es ausführbar. Es würde dann laufen alle tests, sowohl in der verschachtelten Klassen. Quelle: junit.sourceforge.net/javadoc/org/junit/runners/Suite.htmlDas funktionierte gut, wenn ich alle tests ausführen möchten in dieser Klasse, vorher hatte ich zu wählen Sie eine oder das andere. Aber beide Klassen haben ausführen beim ausführen von unit-tests in ein Paket / Projekt-Ebene. Danke!
Ich aktualisiert meine Antwort.
InformationsquelleAutor Phil Ninan
Scheint es, dass TestNG nicht leiden unter diesem problem.
Ich bin nicht so verzweifelt, so dass ich veränderte die builtin-Parametrisierte Klasse, die diese Funktion unterstützen. Einfach kommentieren entsprechenden Prüfungen, wie @NonParameterized.
Beachten Sie, dass diese Klasse funktioniert nur mit Ihren Anmerkungen, d.h. überprüfen Sie Ihre Importe.
Update: Ich versuche, diese Art der Sache Hinzugefügt junit.
InformationsquelleAutor AmanicA
Vorausgesetzt, Sie verwenden Parametrized.class führen Sie Ihre test-Klasse - markieren Sie alle nicht-parametrisierten tests wie @Ignoriert. Ansonsten können Sie eine statische innere Klasse, um alle Ihre parametrisierten tests und anderen - für nicht-eingestellt.
InformationsquelleAutor Artem Oboturov
Habe ich etwas ähnliches wie das Matthäus-Lösung. Allerdings, ich habe zwei neue java-Dateien, erweitert die aktuelle Datei, so dass die ComponentSingleTests nicht zweimal ausgeführt. Auf diese Weise können Sie gemeinsame member-Variablen und Hilfsmethoden aus der übergeordneten Klasse. Das problem hatte ich mit Matthew, der die Lösung war, dass mein single-test wurde ausgeführt, zweimal, statt einmal, wie die Enclosed.class (der erweitert die Suite.class) machen Ihren test zweimal ausgeführt wird, wie in diesem link
Verhindern, dass junit tests ausgeführt zweimal
ComponentTest.java
ComponentParamTests.java
ComponentSingleTests.java
InformationsquelleAutor Chee Loong Soon