Ich weiß, dass Sie alle Tests in einer bestimmten Klasse ausführen können mit:
mvn test -Dtest=Klassenname
Aber ich möchte eine einzelne Methode ausführen und -Dtest=Klassenname.methodenname scheint nicht zu funktionieren.
Ich weiß, dass Sie alle Tests in einer bestimmten Klasse ausführen können mit:
mvn test -Dtest=Klassenname
Aber ich möchte eine einzelne Methode ausführen und -Dtest=Klassenname.methodenname scheint nicht zu funktionieren.
Um eine einzelne Testmethode in Maven auszuführen, müssen Sie den Befehl wie folgt angeben:
mvn test -Dtest=TestCircle#xyz test
wo TestCircle
der Name der Testklasse ist und xyz
die Testmethode ist.
Platzhalterzeichen funktionieren auch; sowohl im Methodennamen als auch im Klassennamen.
Wenn Sie in einem Multi-Modul-Projekt testen, geben Sie das Modul, in dem der Test stattfindet, mit -pl
an.
Für Integrationstests verwenden Sie die Option it.test=...
anstelle von test=...
:
mvn -pl -Dit.test=TestCircle#xyz integration-test
Ich wünschte, es gäbe eine Möglichkeit, Antworten zusammenzuführen ... das ist richtig, aber der Link, von dem es genommen wurde, befindet sich in einem anderen Beitrag: maven.apache.org/plugins/maven-surefire-plugin/examples/…
Ich habe mich gefragt, ob der Klassenname ein vollqualifizierter Klassenname mit Paketnamen sein sollte, und die Antwort ist, dass, obwohl ein vollqualifizierter Name funktioniert, auch nur der Klassenname funktioniert, Maven sucht die Klasse für Sie. Ich vermute, dass es bei mehrdeutigem Namen einen Fehler gibt.
Es gibt ein Problem mit Surefire 2.12. Das ist passiert, als ich das maven-surefire-plugin von 2.12 auf 2.11 geändert habe:
mvn test -Dtest=DesignRulesTest
Ergebnis:
[ERROR] Fehler bei der Ausführung des Ziels org.apache.maven.plugins:maven-surefire-plugin:2.12:test (default-test) im Projekt pmd: Keine Tests wurden ausgeführt!
mvn test -Dtest=DesignRulesTest
Ergebnis: [INFO] --- maven-surefire-plugin:2.11:test (default-test) @ pmd --- ... Führe net.sourceforge.pmd.lang.java.rule.design.DesignRulesTest aus Tests durchgeführt: 5, Fehler: 0, Fehler: 0, Übersprungen: 4, Zeit vergangen: 4.009 Sekunden
mvn test -Dtest=Test1#methodname
mvn test // Führen Sie alle Unit-Testklassen aus
mvn test -Dtest=Test1 // Führen Sie eine einzelne Testklasse aus
mvn test -Dtest=Test1,Test2 // Führen Sie mehrere Testklassen aus
mvn test -Dtest=Test1#testFoo* // Führen Sie alle Testmethoden aus, die dem Muster 'testFoo*' aus einer Testklasse entsprechen.
mvn test -Dtest=Test1#testFoo*+testBar* // Führen Sie alle Testmethoden aus, die dem Muster 'testFoo*' und 'testBar*' aus einer Testklasse entsprechen.
Dies ist eine gute Antwort. In meinem Fall versuchte der Test, ausgeführt zu werden, aber einige Seam-Komponenten waren nicht ordnungsgemäß eingerichtet, sodass anscheinend einige Teile des Setup-Codes übersprungen werden.
Richtig. Du musst entweder groups=broken in deinem @BeforeMethod hinzufügen oder @BeforeMethod(alwaysRun=true) verwenden.
Führen einer Reihe von Methoden in einer einzelnen Testklasse Mit Version 2.7.3 können Sie nur n Tests in einer einzelnen Testklasse ausführen.
HINWEIS: Dies wird für Junit 4.x und TestNG unterstützt.
Sie müssen die folgende Syntax verwenden
mvn -Dtest=TestCircle#mytest test
Sie können auch Muster verwenden
mvn -Dtest=TestCircle#test* test
Ab Surefire 2.12.1 können Sie mehrere Methoden auswählen (nur JUnit4X zu diesem Zeitpunkt, Patches sind willkommen)
mvn -Dtest=TestCircle#testOne+testTwo test
Überprüfen Sie diesen Link zu einzelnen Tests
In meinem Fall musste ich den Testnamen TestClass#test in Anführungszeichen setzen, wie zum Beispiel mvn -Dtest="TestCircle#myTest" test
@PratikKhadloya Hast du eine Ahnung, wie das für abhängige Tests funktioniert? Angenommen, ich habe die Methoden test1(), test2(), test3() in der TestClass und test2 hängt von test1 ab. Wie kann ich nur test2 ausführen?
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
3 Stimmen
Ich wäre auch daran interessiert zu wissen, wie man dies macht. Wenn ich es jedoch recht oft mache, denke ich, dass der Test möglicherweise ein Kandidat für eine eigene Klasse ist, sodass du die Syntax
mvn test -Dtest=classname
verwenden kannst.0 Stimmen
Möchtest du wissen, wie man es nur über die Befehlszeile macht?? Oder würde es für dich funktionieren, ein IDE (Eclipse) zu verwenden?
1 Stimmen
Ich habe mir eine Befehlszeile angeschaut. Ich denke, das JUnit Eclipse-Plugin wird es Ihnen ermöglichen, dies zu tun.
0 Stimmen
Ich habe das für Maven 1 gemacht. Soweit ich mich erinnere, umfasste dies Änderungen an JUnit, das für die Introspektion der Testklasse verantwortlich ist.