Запуск одного тестового метода с помощью Maven
Я знаю, что можно запустить все тесты в определенном классе с помощью команды:
mvn test -Dtest=classname
Но я хочу запустить отдельный метод, и опция -Dtest=classname.methodname
почему-то не работает. Как я могу это сделать?
5 ответ(ов)
Чтобы выполнить отдельный метод теста в Maven, вам нужно использовать следующую команду:
mvn test -Dtest=TestCircle#xyz test
где TestCircle
— это имя класса теста, а xyz
— имя метода теста.
Вы также можете использовать символы подстановки (wild card) как в имени метода, так и в имени класса.
Если вы работаете в многомодульном проекте, укажите модуль, в котором находится тест, с помощью опции -pl <имя-модуля>
.
Для интеграционных тестов используйте опцию it.test=...
вместо test=...
:
mvn -pl <имя-модуля> -Dit.test=TestCircle#xyz integration-test
Проблема с версией maven-surefire-plugin
2.12 заключается в том, что при выполнении теста не запускаются никакие тесты. Я столкнулся с этой проблемой при изменении плагина с 2.12 на 2.11:
При выполнении команды:
mvn test -Dtest=DesignRulesTest
Результат:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:**2.12**:test (default-test) on project pmd: **No tests were executed!**
После возврата к версии 2.11 с той же командой:
mvn test -Dtest=DesignRulesTest
Результат:
[INFO] --- maven-surefire-plugin:**2.11**:test (default-test) @ pmd --- ... Running net.sourceforge.pmd.lang.java.rule.design.DesignRulesTest Tests run: 5, Failures: 0, Errors: 0, Skipped: 4, Time elapsed: 4.009 sec
Как видно из результатов, с версией 2.12 тесты не выполнялись, в то время как с 2.11 они работали корректно. Попробуйте использовать версию 2.11, если у вас возникают подобные проблемы с выполнением тестов.
Чтобы выполнить только один метод теста из тестового класса, вы можете использовать следующую команду Maven:
mvn test -Dtest=Test1#methodname
Другие связанные сценарии использования:
mvn test
// Выполняет все классы юнит-тестов.mvn test -Dtest=Test1
// Запускает только один тестовый класс.mvn test -Dtest=Test1,Test2
// Запускает несколько тестовых классов.mvn test -Dtest=Test1#testFoo*
// Запускает все методы теста, соответствующие шаблону 'testFoo*', из тестового класса.mvn test -Dtest=Test1#testFoo*+testBar*
// Запускает все методы теста, соответствующие шаблонам 'testFoo*' и 'testBar*', из тестового класса.
В TestNG, в отличие от JUnit, вы можете назначить группу для теста, который хотите выполнить. Это делается с помощью аннотации @Test
, где вы указываете нужную группу:
@Test(groups="broken")
Затем вы можете просто запустить тесты с указанной группой, используя следующую команду Maven:
mvn -Dgroups=broken
Таким образом, вы сможете легко управлять запуском только тех тестов, которые помечены определенной группой.
Эта команда работает!!
mvn "-DTest=JoinTeamTestCases#validateJoinTeam" test
Обратите внимание, что опция "-DTest" начинается с заглавной буквы 'T'.
Как указать Maven использовать последнюю версию зависимости?
Как протестировать класс с приватными методами, полями или внутренними классами?
Как добавить локальные JAR-файлы в Maven-проект?
IntelliJ сообщает "Невозможно разрешить символ", но код все равно компилируется
Можно ли добавить JAR-файлы в classpath сборки Maven 2 без их установки?