696 Stimmen

Führen Sie eine einzelne Testmethode mit Maven aus

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.

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.

15voto

vikas Punkte 1218

Dieser Befehl funktioniert!! mvn "-DTest=JoinTeamTestCases#validateJoinTeam" test Beachten Sie, dass "-DTest" mit GROßBUCHSTABE 'T' beginnt.

9 Stimmen

Funktioniert nicht mit SureFire 2.18.x; es führt einfach alle Tests aus.

0 Stimmen

Dies hat für mich einen Unterschied gemacht, als ich Java17 verwendet habe.

12voto

Sie können bestimmte Testklasse(n) und Methode(n) mit folgender Syntax ausführen:

  1. Vollständiges Paket: mvn test -Dtest="com.oracle.tests.**"

  2. Alle Methoden in einer Klasse: mvn test -Dtest=KLASSENNAME1

  3. Eine einzelne Methode aus einer einzelnen Klasse: mvn test -Dtest=KLASSENNAME1#METHODENNAME1

  4. Mehrere Methoden aus mehreren Klassen: mvn test -Dtest=KLASSENNAME1#METHODENNAME1,KLASSENNAME2#METHODENNAME2

9voto

deirdreamuel Punkte 233

Zuerst müssen Sie Ihr Mavem-Projekt bereinigen

mvn clean

Dann können Sie eine bestimmte Datei und Funktion ausführen mit

mvn test -Dtest=testKlassenname#Testfallname

8voto

jwpol Punkte 921

Ich habe verschiedene Lösungen aus diesem Thread ausprobiert, aber sie haben nicht für das Modul funktioniert, das von einem anderen abhängt. In diesem Fall musste ich mvn aus dem Root-Modul mit zusätzlichen Parametern ausführen: -am (--also-make), was Maven sagt, dass Module erstellt werden sollen, von denen Ihr Testmodul abhängt, und -DfailIfNoTests=false, sonst erscheint der Fehler "Keine Tests wurden ausgeführt!".

mvn test -pl B -Dtest=MyTestClass#myTest -am -DfailIfNoTests=false

Bereich pom.xml im Root:

    A
    B

B hängt von A ab.

4voto

Wesley Hartford Punkte 426

Der test-Parameter, der von tobrien erwähnt wird, ermöglicht es Ihnen, eine Methode unter Verwendung eines # vor dem Methodennamen anzugeben. Dies sollte für JUnit und TestNG funktionieren. Ich habe es nie ausprobiert, sondern nur auf der Surefire Plugin-Seite gelesen:

Geben Sie diesen Parameter an, um einzelne Tests nach Dateinamen auszuführen und die Parameter includes/excludes außer Kraft zu setzen. Jedes von Ihnen hier angegebene Muster wird verwendet, um ein Include-Muster im Format **/${test}.java zu erzeugen, sodass Sie einfach "-Dtest=MyTest" eingeben können, um einen einzelnen Test namens "foo/MyTest.java" auszuführen. Dieser Parameter überschreibt die includes/excludes-Parameter und den TestNG suiteXmlFiles-Parameter. Seit 2.7.3 können Sie eine begrenzte Anzahl von Methoden im Test ausführen, indem Sie #myMethod oder #my*ethod hinzufügen. Geben Sie also "-Dtest=MyTest#myMethod" ein, was für junit 4.x und testNg unterstützt wird

CodeJaeger.com

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.

Powered by:

X