Я пытаюсь найти подход, который позволит мне запустить один тест из класса JUnit, используя только командную строку и java.
Я могу запустить весь набор тестов из класса, используя следующее:
java -cp .... org.junit.runner.JUnitCore org.package.classname
Я действительно хочу сделать что-то вроде этого:
java -cp .... org.junit.runner.JUnitCore org.package.classname.method
или:
java -cp .... org.junit.runner.JUnitCore org.package.classname#method
Я заметил, что могут быть способы сделать это с помощью аннотаций JUnit, но я бы предпочел не изменять источник моих тестовых классов вручную (пытаясь автоматизировать это). Я также видел, что у Maven может быть способ сделать это, но, если возможно, я бы хотел избежать зависимости от Maven.
Поэтому мне интересно, есть ли способ сделать это?
Ключевые моменты, которые я ищу:
- Возможность запуска одного теста из тестового класса JUnit
- Командная строка (с использованием JUnit)
- Избегайте изменения источника теста
- Избегайте использования дополнительных инструментов
java
unit-testing
command-line
junit
Кевин Джалберт
источник
источник
Ответы:
Вы можете довольно легко создать собственный, базовый JUnit runner. Вот тот, который будет запускать единственный тестовый метод в форме
com.package.TestClass#methodName
:Вы можете вызвать его так:
После беглого просмотра исходного кода JUnit я пришел к такому же выводу, что и вы, что JUnit не поддерживает это изначально. Для меня это никогда не было проблемой, поскольку все IDE имеют пользовательские интеграции JUnit, которые, помимо других действий, позволяют запускать тестовый метод под курсором. Я никогда не запускал тесты JUnit напрямую из командной строки; Я всегда позволял IDE или инструменту сборки (Ant, Maven) позаботиться об этом. Тем более, что точка входа CLI по умолчанию (JUnitCore) не выдает никаких результатов, кроме ненулевого кода выхода при неудачном (-ых) тестировании.
ПРИМЕЧАНИЕ: для версии JUnit> = 4.9 вам нужна библиотека hamcrest в пути к классам
источник
Я использую Maven для сборки своего проекта и плагин SureFire maven для запуска тестов junit. Если у вас есть такая настройка, вы можете:
В этом примере мы просто запускаем тестовый метод с именем «testMethod» в классе «GreatTestClass».
Для получения дополнительной информации посетите http://maven.apache.org/surefire/maven-surefire-plugin/examples/single-test.html.
источник
Мы использовали IntelliJ и тоже потратили немало времени на то, чтобы разобраться в этом.
По сути, он состоит из 2 шагов:
Шаг 1. Скомпилируйте тестовый класс
% javac -cp .:"/Applications/IntelliJ IDEA 13 CE.app/Contents/lib/*" SetTest.java
Шаг 2. Запустите тест
% java -cp .:"/Applications/IntelliJ IDEA 13 CE.app/Contents/lib/*" org.junit.runner.JUnitCore SetTest
источник