Führen Sie eine einzige Testmethode mit Maven aus

Ich weiß, dass Sie alle Tests in einer bestimmten class ausführen können:

mvn test -Dtest=classname 

Aber ich möchte eine individuelle Methode ausführen und -Dtest = classnname.Methodenname scheint nicht zu funktionieren.

Um eine einzelne Testmethode in Maven auszuführen, müssen Sie den Befehl wie folgt angeben:

 mvn -Dtest=TestCircle#xyz test 

Dabei ist TestCircle der Name der TestCircle und xyz die Testmethode.

Wild Card Charaktere funktionieren auch; sowohl im Methodennamen als auch im classnnamen.

Wenn Sie in einem Projekt mit -pl testen, geben Sie das Modul an, in dem sich der Test befindet, mit -pl .

Für Integrationstests verwenden it.test=... Option it.test=... anstelle von test=... :

 mvn -pl  -Dit.test=TestCircle#xyz integration-test 

Es gibt ein Problem mit todsicheren 2.12. Das ist, was passiert, wenn ich maven-surefire-plugin von 2.12 auf 2.11 ändere:

  1. mvn test -Dtest=DesignRulesTest

    Ergebnis:
    [FEHLER] Fehler beim Ausführen des Ziels org.apache.maven.plugins: maven-surefire-plugin: 2.12 : test (default-test) auf projekt pmd: Es wurden keine Tests ausgeführt!

  2. mvn test -Dtest=DesignRulesTest

    Ergebnis: [INFO] — maven-surefire-plugin: 2.11 : test (default-test) @ pmd — … Laufende net.sourceforge.pmd.lang.java.rule.design.DesignRulesTest Tests laufen: 5 , Fehler: 0, Fehler: 0, übersprungen: 4, verstrichene Zeit: 4.009 sek

Was ich mit meinem TestNG mache, (tut mir leid, JUnit unterstützt das nicht) Testfälle ist, dass ich dem Test, den ich ausführen möchte, eine Gruppe zuweisen kann

 @Test(groups="broken") 

Und dann führe einfach ‘mvn -Dgroups = kaputt’ aus.

Eine Reihe von Methoden in einer einzelnen Testklasse ausführen Mit Version 2.7.3 können Sie nur n Tests in einer einzelnen Testklasse ausführen.

Hinweis: es 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 securefire 2.12.1 können Sie mehrere Methoden auswählen (JUnit4X nur zu diesem Zeitpunkt, Patches sind willkommen)

 mvn -Dtest=TestCircle#testOne+testTwo test 

Überprüfen Sie diesen Link über einzelne Tests

Der von tobrien genannte Testparameter ermöglicht es Ihnen, eine Methode mit einem # vor dem Methodennamen anzugeben. Dies sollte für JUnit und TestNG funktionieren. Ich habe es noch nie probiert, lesen Sie es einfach auf der Surefire Plugin-Seite :

Geben Sie diesen Parameter an, um einzelne Tests nach Dateinamen auszuführen, wobei die Parameter includes / excluses überschrieben werden. Jedes Muster, das Sie hier angeben, wird verwendet, um ein Include-Muster zu erstellen, das wie ** / $ {test} .java formatiert ist. Sie können also einfach “-Dtest = MyTest” eingeben, um einen einzelnen Test namens “foo / MyTest.java” auszuführen. Dieser Parameter überschreibt die Parameter includes / excludes und den Parameter TestNG suiteXmlFiles. seit 2.7.3 Sie können eine begrenzte Anzahl von Methoden im Test ausführen, indem Sie #myMethod oder # my * ethod hinzufügen. Si-Typ “-Dtest = MyTest # myMethod” unterstützt für Junit 4.x und testNg

Dieser Befehl funktioniert !! mvn "-DTest=JoinTeamTestCases#validateJoinTeam" test Beachten Sie, dass “-DTest” mit UPPER CASE ‘T’ beginnt.

Neue Versionen von JUnit enthalten den Runner “Categories”: http://kentbeck.github.com/junit/doc/ReleaseNotes4.8.html

Aber das Freigabeverfahren von JUnit basiert nicht auf Maven, also müssen Maven-Benutzer es manuell in ihre Repositories stellen.

Sie können spezifische Testklasse (n) und Methode (n) mit der folgenden Syntax ausführen:

  1. vollständiges Paket: mvn test -Dtest = “com.oracle.tests. **”

  2. Alle Methoden in einer class: mvn test -Dtest = CLASS_NAME1

  3. einzelne Methode aus einer einzelnen class: mvn test -Dtest = CLASS_NAME1 # METHOD_NAME1

  4. Mehrere Methoden aus mehreren classn: mvn test -Dtest = CLASS_NAME1 # METHOD_NAME1, CLASS_NAME2 # METHOD_NAME2

Sie können eine einzelne Testklasse, aber keine einzelne Methode innerhalb einer Testklasse ausführen. Sie verwenden den einfachen Namen der class und nicht den vollständig qualifizierten Namen der class. Also, wenn Sie einen Test in “org.sonatype.test.MyTest” haben und das ist der einzige Test, den Sie ausführen möchten, würde Ihre Befehlszeile wie folgt aussehen:

 mvn test -Dtest=MyTest 

Soweit ich weiß, bietet das todsichere Plugin keine Möglichkeit, dies zu tun. Aber zögern Sie nicht, ein Problem zu öffnen 🙂