Chciałbym uruchomić przypadki testowe JUnit z wiersza poleceń. W jaki sposób mogę to zrobić?
javac -cp "junit-4.12.jar; hamcrest-core-1.3.jar;." Tests.java
pracował dla mnie. Uwaga końcowa kropka - to ważne!
Chciałbym uruchomić przypadki testowe JUnit z wiersza poleceń. W jaki sposób mogę to zrobić?
javac -cp "junit-4.12.jar; hamcrest-core-1.3.jar;." Tests.java
pracował dla mnie. Uwaga końcowa kropka - to ważne!
Odpowiedzi:
W przypadku JUnit 5.x jest to:
java -jar junit-platform-console-standalone-<version>.jar <Options>
Znajdź krótkie streszczenie na https://stackoverflow.com/a/52373592/1431016, a pełne szczegóły na https://junit.org/junit5/docs/current/user-guide/#running-tests-console-launcher
W przypadku JUnit 4.X jest to naprawdę:
java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]
Ale jeśli używasz JUnit 3.X zwróć uwagę, że nazwa klasy jest inna:
java -cp .:/usr/share/java/junit.jar junit.textui.TestRunner [test class name]
Może być konieczne dodanie większej liczby plików JAR lub katalogów z plikami klas do ścieżki klasy i oddzielenie ich średnikami (Windows) lub dwukropkami (UNIX / Linux). To zależy od twojego środowiska.
Edycja: dodałem bieżący katalog jako przykład. Zależy od środowiska i sposobu budowania aplikacji (może to być bin / lub build / a nawet my_application.jar itp.). Uwaga: Java 6+ obsługuje globusy w ścieżce klas, możesz:
java -cp lib/*.jar:/usr/share/java/junit.jar ...
Mam nadzieję, że to pomoże. Napisz testy! :-)
Maven way
Jeśli używasz Maven, możesz uruchomić następującą komendę, aby uruchomić wszystkie przypadki testowe:
mvn clean test
Lub możesz uruchomić określony test, jak poniżej
mvn clean test -Dtest=your.package.TestClassName
mvn clean test -Dtest=your.package.TestClassName#particularMethod
Jeśli chcesz zobaczyć ślad stosu (jeśli istnieje) w konsoli zamiast plików raportów w folderze docelowym \ surefire-raporty, ustaw właściwość użytkownika surefire.useFile na wartość false. Na przykład:
mvn clean test -Dtest=your.package.TestClassName -Dsurefire.useFile=false
Stopniowy sposób
Jeśli używasz opcji Gradle, możesz uruchomić następujące polecenie, aby uruchomić wszystkie przypadki testowe:
gradle test
Lub możesz uruchomić określony test, jak poniżej
gradle test --tests your.package.TestClassName
gradle test --tests your.package.TestClassName.particularMethod
Jeśli chcesz uzyskać więcej informacji, możesz rozważyć takie opcje, jak --stacktrace, --info lub --debug.
Na przykład, gdy uruchomisz Gradle z poziomem rejestrowania informacji - info, pokaże on wynik każdego testu podczas jego działania. Jeśli jest jakiś wyjątek, pokaże on ślad stosu, wskazując na czym polega problem.
gradle test --info
Jeśli chcesz zobaczyć ogólne wyniki testu, możesz na przykład otworzyć raport w przeglądarce (otwórz go za pomocą Google Chrome w Ubuntu):
google-chrome build/reports/tests/index.html
Sposób mrówki
Po skonfigurowaniu pliku kompilacji Anta build.xml możesz uruchomić przypadki testowe JUnit z wiersza poleceń, jak poniżej:
ant -f build.xml <Your JUnit test target name>
Możesz kliknąć poniższy link, aby dowiedzieć się więcej na temat konfigurowania testów JUnit w pliku kompilacji Ant: https://ant.apache.org/manual/Tasks/junit.html
Normalny sposób
Jeśli nie korzystasz z Maven, Gradle lub Ant, możesz postępować w następujący sposób:
Przede wszystkim musisz skompilować swoje przypadki testowe. Na przykład (w systemie Linux):
javac -d /absolute/path/for/compiled/classes -cp /absolute/path/to/junit-4.12.jar /absolute/path/to/TestClassName.java
Następnie uruchom swoje przypadki testowe. Na przykład:
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
Odpowiedź udzielona przez @lzap jest dobrym rozwiązaniem. Chciałbym jednak dodać, że należy dodać. do ścieżki klasy, aby bieżący katalog nie został pominięty, co spowoduje, że własne klasy zostaną pominięte. Zdarzyło mi się to na niektórych platformach. Zaktualizowana wersja JUnit 4.x będzie:
java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]
Upewnij się, że JUnit.jar znajduje się w ścieżce klasy, a następnie uruchom konsolę z linii poleceń
java org.junit.runner.JUnitCore [nazwa klasy testowej]
Odniesienie: FAQ FAQ
W JUnit 4.12 nie działało dla mnie:
java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]
Najwyraźniej od JUnit 4.11 należy również dołączyć hamcrest-core.jar
do ścieżki klasy:
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]
W Windowsie jest
java -cp .;/path/junit.jar org.junit.runner.JUnitCore TestClass
[nazwa klasy testowej bez rozszerzenia .class]
na przykład:
c:\>java -cp .;f:/libraries/junit-4.8.2 org.junit.runner.JUnitCore TestSample1 TestSample2 ...
i tak dalej, jeśli ktoś ma więcej niż jedną klasę testową.
-cp oznacza ścieżkę klasy, a kropka (.) reprezentuje istniejącą ścieżkę klasy, natomiast średnik (;) dołącza dodatkowy podany jar do ścieżki klasy, jak w powyższym przykładzie junit-4.8.2 jest teraz dostępny w ścieżce klasy do wykonania klasy JUnitCore, która tutaj wykonywaliśmy nasze klasy testowe.
Powyższa instrukcja wiersza poleceń pomaga wykonywać testy junit (wersja 4+) z wiersza polecenia (np. MSDos).
Uwaga: JUnitCore to fasada do wykonywania testów junit, ta fasada jest zawarta w ponad 4 wersjach junit.
Jeśli twój projekt jest oparty na Maven, możesz uruchomić wszystkie metody testowe z klasy testowej CustomTest, która należy do modułu „mój-moduł”, używając następnej komendy:
mvn clean test -pl :my-module -Dtest=CustomTest
Lub uruchom tylko 1 metodę testową myMethod z klasy testowej CustomTest, używając następnego polecenia:
mvn clean test -pl :my-module -Dtest=CustomTest#myMethod
Do tej umiejętności potrzebujesz Maven Surefire Plugin v.2.7.3 + i Junit 4. Więcej szczegółów tutaj: http://maven.apache.org/surefire/maven-surefire-plugin/examples/single-test.html
Alternatywnie możesz użyć następujących metod w klasie JunitCore http://junit.sourceforge.net/javadoc/org/junit/runner/JUnitCore.html
uruchom (z żądaniem, klasami klas i biegaczem) lub runClasses z pliku Java.
Jeśli projekt jest oparty na mrówkach, powinieneś być w stanie zrobić coś takiego z konsoli:
ant test
Jeśli to nie zadziała, ale nadal Twój projekt jest oparty na mrówkach, możesz uruchomić, ant -p
aby wyświetlić listę głównych celów projektu.