Как запустить тестовые случаи JUnit из командной строки - PullRequest
302 голосов
/ 10 февраля 2010

Я хотел бы запустить тестовые случаи JUnit из командной строки. Как я могу это сделать?

Ответы [ 11 ]

254 голосов
/ 24 августа 2011

Для JUnit 5.x это:

java -jar junit-platform-console-standalone-<version>.jar <Options>

Найти краткую сводку в https://stackoverflow.com/a/52373592/1431016 и полную информацию в https://junit.org/junit5/docs/current/user-guide/#running-tests-console-launcher

Для JUnit 4.X это действительно:

java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]

Но если вы используете JUnit 3.X , обратите внимание, что имя класса отличается:

java -cp .:/usr/share/java/junit.jar junit.textui.TestRunner [test class name]

Возможно, вам потребуется добавить дополнительные JAR-файлы или каталоги с вашими файлами классов в путь к классам и отделить их точками с запятой (Windows) или двоеточиями (UNIX / Linux). Это зависит от вашей среды.

Редактировать: я добавил текущий каталог в качестве примера. Зависит от вашей среды и от того, как вы строите свое приложение (может быть bin / или build / или даже my_application.jar и т. Д.). Обратите внимание, что Java 6+ поддерживает глобусы в classpath, вы можете сделать:

java -cp lib/*.jar:/usr/share/java/junit.jar ...

Надеюсь, это поможет. Пишите тесты! : -)

90 голосов
/ 08 октября 2016

Maven way

Если вы используете Maven, вы можете запустить следующую команду для запуска всех ваших тестов:

mvn clean test

Или вы можете запустить определенный тест, как показано ниже

mvn clean test -Dtest=your.package.TestClassName
mvn clean test -Dtest=your.package.TestClassName#particularMethod

Если вы хотите видеть трассировку стека (если она есть) в консоли, а не файлы отчетов в папке target \ surefire-reports, установите для свойства пользователя surefire.useFile значение false. Например:

mvn clean test -Dtest=your.package.TestClassName -Dsurefire.useFile=false

Gradle way

Если вы используете Gradle, вы можете запустить следующую команду для запуска всех ваших тестов:

gradle test

Или вы можете запустить определенный тест, как показано ниже

gradle test --tests your.package.TestClassName
gradle test --tests your.package.TestClassName.particularMethod

Если вам нужна дополнительная информация, вы можете рассмотреть такие опции, как --stacktrace, или --info, или --debug.

Например, когда вы запускаете Gradle с уровнем ведения журнала информации --info, он покажет вам результаты каждого теста во время их выполнения. Если есть какое-либо исключение, он покажет вам трассировку стека, указав, в чем проблема.

gradle test --info

Если вы хотите просмотреть общие результаты теста, вы можете открыть отчет в браузере, например (откройте его с помощью Google Chrome в Ubuntu):

google-chrome build/reports/tests/index.html

Путь муравья

После настройки файла сборки Ant build.xml вы можете запускать тестовые сценарии JUnit из командной строки, как показано ниже:

ant -f build.xml <Your JUnit test target name>

Вы можете перейти по ссылке ниже, чтобы узнать больше о том, как настроить тесты JUnit в файле сборки Ant: https://ant.apache.org/manual/Tasks/junit.html

Обычный способ

Если вы не используете Maven, Gradle или Ant, вы можете выполнить следующие действия:

Прежде всего, вам нужно скомпилировать тестовые случаи. Например (в Linux):

javac -d /absolute/path/for/compiled/classes -cp /absolute/path/to/junit-4.12.jar /absolute/path/to/TestClassName.java

Затем запустите ваши тесты. Например:

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
49 голосов
/ 15 августа 2012

Ответ, который дал @lzap, является хорошим решением. Тем не менее, я хотел бы добавить, что вы должны добавить. к пути к классам, так что ваш текущий каталог не будет пропущен, в результате чего ваши собственные классы будут пропущены. Это случилось со мной на некоторых платформах. Таким образом, обновленная версия для JUnit 4.x будет выглядеть так:

java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]
21 голосов
/ 10 февраля 2010

Убедитесь, что JUnit.jar находится в вашем пути к классам, а затем вызовите программу запуска командной строки из консоли.

java org.junit.runner.JUnitCore [имя класса теста]

Ссылка: FAQ по Junit

19 голосов
/ 13 июня 2015

С JUnit 4.12 у меня не работает следующее:

java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]

Очевидно , начиная с JNnit 4.11 и далее, вы также должны включить hamcrest-core.jar в ваш путь к классу:

java -cp .:/usr/share/java/junit.jar:/usr/share/java/hamcrest-core.jar org.junit.runner.JUnitCore [test class name]
12 голосов
/ 15 мая 2014

В окнах это

java -cp .;/path/junit.jar org.junit.runner.JUnitCore TestClass [имя класса теста без расширения .class]

например: c:\>java -cp .;f:/libraries/junit-4.8.2 org.junit.runner.JUnitCore TestSample1 TestSample2 ... и т. Д., Если имеется более одного тестового класса.

-cp обозначает путь к классу, а точка (.) Представляет существующий путь к классу, а точка с запятой (;) добавляет дополнительный заданный jar к пути к классу, как в приведенном выше примере: junit-4.8.2 теперь доступен в classpath для выполнения класса JUnitCore, который здесь мы использовали для выполнения наших тестовых классов.

Оператор над командной строкой помогает выполнять тесты junit (версия 4+) из командной строки (i-e MSDos).

Примечание: JUnitCore - это фасад для выполнения тестов junit, этот фасад включен в 4+ версии junit.

5 голосов
/ 05 декабря 2013

На самом деле вы также можете сделать тест Junit работоспособным Jar и назвать работающий JAR как java-jar

4 голосов
/ 01 декабря 2014

Если ваш проект основан на Maven, вы можете запустить все тестовые методы из тестового класса CustomTest, который принадлежит модулю 'my-module', используя следующую команду:

mvn clean test -pl :my-module -Dtest=CustomTest

Или запустите только 1 тест-метод myMethod из тест-класса CustomTest с помощью следующей команды:

mvn clean test -pl :my-module -Dtest=CustomTest#myMethod

Для этой способности вам понадобится плагин Maven Surefire v.2.7.3 + и Junit 4. Более подробная информация здесь: http://maven.apache.org/surefire/maven-surefire-plugin/examples/single-test.html

4 голосов
/ 15 апреля 2013

Лично я бы использовал для этого бегущий Maven верный JUnit.

0 голосов
/ 17 февраля 2015

В качестве альтернативы вы можете использовать следующие методы в классе JunitCore http://junit.sourceforge.net/javadoc/org/junit/runner/JUnitCore.html

run (с запросом, классами классов и Runner) или runClasses из вашего Java-файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...