7

Запуск одного тестового метода с помощью Maven

1

Я знаю, что можно запустить все тесты в определенном классе с помощью команды:

mvn test -Dtest=classname

Но я хочу запустить отдельный метод, и опция -Dtest=classname.methodname почему-то не работает. Как я могу это сделать?

5 ответ(ов)

9

Чтобы выполнить отдельный метод теста в Maven, вам нужно использовать следующую команду:

mvn test -Dtest=TestCircle#xyz test

где TestCircle — это имя класса теста, а xyz — имя метода теста.

Вы также можете использовать символы подстановки (wild card) как в имени метода, так и в имени класса.

Если вы работаете в многомодульном проекте, укажите модуль, в котором находится тест, с помощью опции -pl <имя-модуля>.

Для интеграционных тестов используйте опцию it.test=... вместо test=...:

mvn -pl <имя-модуля> -Dit.test=TestCircle#xyz integration-test
0

Проблема с версией maven-surefire-plugin 2.12 заключается в том, что при выполнении теста не запускаются никакие тесты. Я столкнулся с этой проблемой при изменении плагина с 2.12 на 2.11:

  1. При выполнении команды:

    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. После возврата к версии 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, если у вас возникают подобные проблемы с выполнением тестов.

0

Чтобы выполнить только один метод теста из тестового класса, вы можете использовать следующую команду 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*', из тестового класса.
0

В TestNG, в отличие от JUnit, вы можете назначить группу для теста, который хотите выполнить. Это делается с помощью аннотации @Test, где вы указываете нужную группу:

@Test(groups="broken")

Затем вы можете просто запустить тесты с указанной группой, используя следующую команду Maven:

mvn -Dgroups=broken

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

0

Эта команда работает!!

mvn "-DTest=JoinTeamTestCases#validateJoinTeam" test

Обратите внимание, что опция "-DTest" начинается с заглавной буквы 'T'.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь