Ich möchte JUnit-Testfälle über die Befehlszeile ausführen. Wie kann ich das machen?
javac -cp "junit-4.12.jar; hamcrest-core-1.3.jar;." Tests.java
arbeitete für mich. Beachten Sie den Endpunkt - es ist wichtig!
Ich möchte JUnit-Testfälle über die Befehlszeile ausführen. Wie kann ich das machen?
javac -cp "junit-4.12.jar; hamcrest-core-1.3.jar;." Tests.java
arbeitete für mich. Beachten Sie den Endpunkt - es ist wichtig!
Antworten:
Für JUnit 5.x ist es:
java -jar junit-platform-console-standalone-<version>.jar <Options>
Eine kurze Zusammenfassung finden Sie unter https://stackoverflow.com/a/52373592/1431016 und ausführliche Informationen unter https://junit.org/junit5/docs/current/user-guide/#running-tests-console-launcher
Für JUnit 4.X ist es wirklich:
java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]
Wenn Sie jedoch JUnit 3.X verwenden, beachten Sie, dass der Klassenname anders ist:
java -cp .:/usr/share/java/junit.jar junit.textui.TestRunner [test class name]
Möglicherweise müssen Sie dem Klassenpfad weitere JARs oder Verzeichnisse mit Ihren Klassendateien hinzufügen und diese durch Semikolons (Windows) oder Doppelpunkte (UNIX / Linux) trennen. Das hängt von Ihrer Umgebung ab.
Bearbeiten: Ich habe als Beispiel das aktuelle Verzeichnis hinzugefügt. Hängt von Ihrer Umgebung ab und davon, wie Sie Ihre Anwendung erstellen (kann bin / oder build / oder sogar my_application.jar usw. sein). Hinweis Java 6+ unterstützt Globs im Klassenpfad. Sie können Folgendes tun:
java -cp lib/*.jar:/usr/share/java/junit.jar ...
Ich hoffe es hilft. Schreibe Tests! :-)
Maven Weg
Wenn Sie Maven verwenden, können Sie den folgenden Befehl ausführen, um alle Ihre Testfälle auszuführen:
mvn clean test
Oder Sie können einen bestimmten Test wie unten ausführen
mvn clean test -Dtest=your.package.TestClassName
mvn clean test -Dtest=your.package.TestClassName#particularMethod
Wenn Sie den Stack-Trace (falls vorhanden) in der Konsole anstelle von Berichtsdateien im Ordner target \ surefire-reports anzeigen möchten, setzen Sie die Benutzereigenschaft surefire.useFile auf false. Zum Beispiel:
mvn clean test -Dtest=your.package.TestClassName -Dsurefire.useFile=false
Gradle Weg
Wenn Sie Gradle verwenden, können Sie den folgenden Befehl ausführen, um alle Ihre Testfälle auszuführen:
gradle test
Oder Sie können einen bestimmten Test wie unten ausführen
gradle test --tests your.package.TestClassName
gradle test --tests your.package.TestClassName.particularMethod
Wenn Sie weitere Informationen wünschen, können Sie Optionen wie --stacktrace, --info oder --debug in Betracht ziehen.
Wenn Sie beispielsweise Gradle mit der Info-Protokollierungsstufe --info ausführen, wird das Ergebnis jedes Tests angezeigt, während dieser ausgeführt wird. Wenn es eine Ausnahme gibt, wird Ihnen die Stapelverfolgung angezeigt, die auf das Problem hinweist.
gradle test --info
Wenn Sie die allgemeinen Testergebnisse anzeigen möchten, können Sie den Bericht beispielsweise im Browser öffnen (Öffnen Sie ihn mit Google Chrome in Ubuntu):
google-chrome build/reports/tests/index.html
Ameisenweg
Sobald Sie Ihre Ant-Build-Datei build.xml eingerichtet haben, können Sie Ihre JUnit-Testfälle über die folgende Befehlszeile ausführen:
ant -f build.xml <Your JUnit test target name>
Sie können dem folgenden Link folgen, um weitere Informationen zum Konfigurieren von JUnit-Tests in der Ant-Build-Datei zu erhalten: https://ant.apache.org/manual/Tasks/junit.html
Normaler Weg
Wenn Sie Maven, Gradle oder Ant nicht verwenden, können Sie folgendermaßen vorgehen:
Zunächst müssen Sie Ihre Testfälle kompilieren. Zum Beispiel (unter Linux):
javac -d /absolute/path/for/compiled/classes -cp /absolute/path/to/junit-4.12.jar /absolute/path/to/TestClassName.java
Führen Sie dann Ihre Testfälle aus. Zum Beispiel:
java -cp /absolute/path/for/compiled/classes:/absolute/path/to/junit-4.12.jar:/absolute/path/to/hamcrest-core-1.3.jar org.junit.runner.JUnitCore your.package.TestClassName
Die Antwort, die @lzap gab, ist eine gute Lösung. Ich möchte jedoch hinzufügen, dass Sie hinzufügen sollten. zum Klassenpfad, damit Ihr aktuelles Verzeichnis nicht ausgelassen wird, was dazu führt, dass Ihre eigenen Klassen weggelassen werden. Das ist mir auf einigen Plattformen passiert. Eine aktualisierte Version für JUnit 4.x wäre also:
java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]
Stellen Sie sicher, dass sich JUnit.jar in Ihrem Klassenpfad befindet, und rufen Sie dann den Befehlszeilenläufer über die Konsole auf
java org.junit.runner.JUnitCore [Name der Testklasse]
Referenz: junit FAQ
Mit JUnit 4.12 hat Folgendes bei mir nicht funktioniert:
java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]
Anscheinend sollten Sie ab JUnit 4.11 auch Folgendes hamcrest-core.jar
in Ihren Klassenpfad aufnehmen:
java -cp .:/usr/share/java/junit.jar:/usr/share/java/hamcrest-core.jar org.junit.runner.JUnitCore [test class name]
java -cp .:/usr/share/java/junit4.jar org.junit.runner.JUnitCore [test class name]
In Windows ist es
java -cp .;/path/junit.jar org.junit.runner.JUnitCore TestClass
[Name der Testklasse ohne Erweiterung .class]
Zum Beispiel:
c:\>java -cp .;f:/libraries/junit-4.8.2 org.junit.runner.JUnitCore TestSample1 TestSample2 ...
und so weiter, wenn man mehr als eine Testklasse hat.
-cp steht für Klassenpfad und der Punkt (.) stellt den vorhandenen Klassenpfad dar, während Semikolon (;) das zusätzlich angegebene JAR an den Klassenpfad anfügt, wie im obigen Beispiel junit-4.8.2 jetzt im Klassenpfad verfügbar ist, um die JUnitCore-Klasse auszuführen, die Hier haben wir unsere Testklassen ausgeführt.
Die obige Befehlszeilenanweisung hilft Ihnen beim Ausführen von Junit-Tests (Version 4+) an der Eingabeaufforderung (z. B. MSDos).
Hinweis: JUnitCore ist eine Fassade zum Ausführen von Junit-Tests. Diese Fassade ist in mehr als 4 Junit-Versionen enthalten.
Wenn Ihr Projekt auf Maven basiert, können Sie alle Testmethoden aus der Testklasse CustomTest, die zum Modul 'my-module' gehört, mit dem nächsten Befehl ausführen:
mvn clean test -pl :my-module -Dtest=CustomTest
Oder führen Sie nur 1 Testmethode myMethod aus der Testklasse CustomTest mit dem nächsten Befehl aus:
mvn clean test -pl :my-module -Dtest=CustomTest#myMethod
Für diese Fähigkeit benötigen Sie das Maven Surefire Plugin v.2.7.3 + und Junit 4. Weitere Details finden Sie hier: http://maven.apache.org/surefire/maven-surefire-plugin/examples/single-test.html
Alternativ können Sie die folgenden Methoden in der JunitCore-Klasse http://junit.sourceforge.net/javadoc/org/junit/runner/JUnitCore.html verwenden
Führen Sie (mit Request, Class Classes und Runner) oder runClasses aus Ihrer Java-Datei aus.
Wenn Ihr Projekt auf Ameisen basiert, sollten Sie in der Lage sein, Folgendes über die Konsole zu tun:
ant test
Wenn dies nicht funktioniert, Ihr Projekt jedoch auf Ameisen basiert, können Sie ant -p
die Hauptziele des Projekts auflisten.