Подтвердить что ты не робот

Maven:: запуск только одного теста в многомодульном проекте

Есть ли способ предоставить некоторый аргумент командной строки, чтобы пропустить все тесты, кроме одного на каком-то модуле? Так что мне не нужно менять pom.xml каждый раз, когда мне нужно будет запустить еще один тест?

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

Возможно, это не так, как предполагается, что CI используется, но все же.

4b9b3361

Ответ 1

Я предполагаю, что вы прочитали документы о запуске одного теста при уверенности? То, что они не говорят вам, как это сделать в подмодуле:

mvn test -Dtest=testname -pl subproject

Где subproject - проект, содержащий этот тест. На странице mvn man:

-pl, - projects arg Список разделенных запятыми заданных проектов реакторов для сборки вместо всех проектов. Проект может быть задан [groupId]: artifactId или его относительным путем.

Ответ 2

Другие ответы, которые я вижу, не полностью завершены, для проектов, которые зависят от других подмодулей, которые будут построены. Один из вариантов - запустить mvn install чтобы mvn install необходимые ~/.m2/... в ~/.m2/..., но этот вариант не очень "чистый".

Следующая команда создаст подмодули и запустит только указанный тестовый класс. Это должно быть запущено на уровне родительского модуля. Кроме того, нет необходимости указывать имя подмодуля.

mvn test -DfailIfNoTests=false -Dtest={test_class_name} -am

Кроме того, это также может быть mvn clean test -Dfa..... У меня есть привычка всегда работать в clean при проведении тестов.

Рекомендации..
-am сделает все остальные -am.
-DfailIfNoTests=false не -DfailIfNoTests=false весь процесс, так как мы не собираемся запускать тесты в других модулях.
-pl не нужна, поскольку -am уже строит все