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.
Sie können bestimmte Testklasse(n) und Methode(n) mit folgender Syntax ausführen:
Vollständiges Paket: mvn test -Dtest="com.oracle.tests.**"
Alle Methoden in einer Klasse: mvn test -Dtest=KLASSENNAME1
Eine einzelne Methode aus einer einzelnen Klasse: mvn test -Dtest=KLASSENNAME1#METHODENNAME1
Mehrere Methoden aus mehreren Klassen: mvn test -Dtest=KLASSENNAME1#METHODENNAME1,KLASSENNAME2#METHODENNAME2
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.
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 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.