Ich versuche einen Ansatz zu finden, mit dem ich einen einzelnen Test aus einer JUnit-Klasse nur mit Befehlszeile und Java ausführen kann.
Ich kann den gesamten Satz von Tests aus der Klasse folgendermaßen ausführen:
java -cp .... org.junit.runner.JUnitCore org.package.classname
Was ich wirklich tun möchte, ist ungefähr so:
java -cp .... org.junit.runner.JUnitCore org.package.classname.method
oder:
java -cp .... org.junit.runner.JUnitCore org.package.classname#method
Ich habe festgestellt, dass es Möglichkeiten gibt, dies mithilfe von JUnit-Annotationen zu tun, aber ich würde es vorziehen, die Quelle meiner Testklassen nicht manuell zu ändern (um dies zu automatisieren). Ich habe auch gesehen, dass Maven eine Möglichkeit hat, dies zu tun, aber wenn möglich, würde ich es gerne vermeiden, von Maven abhängig zu sein.
Ich frage mich also, ob es eine Möglichkeit gibt, dies zu tun?
Wichtige Punkte, die ich suche:
- Möglichkeit, einen einzelnen Test aus einer JUnit-Testklasse auszuführen
- Befehlszeile (mit JUnit)
- Vermeiden Sie es, die Testquelle zu ändern
- Vermeiden Sie die Verwendung zusätzlicher Werkzeuge
java
unit-testing
command-line
junit
Kevin Jalbert
quelle
quelle
Antworten:
Sie können ziemlich einfach einen benutzerdefinierten Barebone-JUnit-Läufer erstellen. Hier ist eine, die eine einzelne Testmethode in der folgenden Form ausführt
com.package.TestClass#methodName
:Sie können es folgendermaßen aufrufen:
Nach einem kurzen Blick in die JUnit-Quelle bin ich zu dem gleichen Schluss gekommen wie Sie, dass JUnit dies nicht nativ unterstützt. Dies war für mich nie ein Problem, da alle IDEs über benutzerdefinierte JUnit-Integrationen verfügen, mit denen Sie unter anderem die Testmethode unter dem Cursor ausführen können. Ich habe JUnit-Tests noch nie direkt über die Befehlszeile ausgeführt. Ich habe immer entweder die IDE oder das Build-Tool (Ant, Maven) dafür sorgen lassen. Zumal der Standard-CLI-Einstiegspunkt (JUnitCore) bei Testfehlern keine andere Ergebnisausgabe als einen Exit-Code ungleich Null erzeugt.
HINWEIS: Für die JUnit-Version> = 4.9 benötigen Sie die Hamcrest- Bibliothek im Klassenpfad
quelle
Ich verwende Maven, um mein Projekt zu erstellen, und das SureFire-Maven-Plugin, um Junit-Tests auszuführen. Vorausgesetzt, Sie haben dieses Setup, können Sie Folgendes tun:
In diesem Beispiel führen wir nur eine Testmethode mit dem Namen "testMethod" in der Klasse "GreatTestClass" aus.
Weitere Informationen finden Sie unter http://maven.apache.org/surefire/maven-surefire-plugin/examples/single-test.html
quelle
Wir haben IntelliJ verwendet und viel Zeit damit verbracht, es auch herauszufinden.
Grundsätzlich umfasst es 2 Schritte:
Schritt 1: Kompilieren Sie die Testklasse
% javac -cp .:"/Applications/IntelliJ IDEA 13 CE.app/Contents/lib/*" SetTest.java
Schritt 2: Führen Sie den Test aus
% java -cp .:"/Applications/IntelliJ IDEA 13 CE.app/Contents/lib/*" org.junit.runner.JUnitCore SetTest
quelle