У меня есть сборка Maven, в которой я использую плагин SureFire для запуска некоторых модульных тестов и плагин FailSafe для запуска некоторых интеграционных тестов. Я хотел бы запустить только тесты плагина FailSafe.
Для меня это плохое решение - добавлять разные профили или что-то еще в pom, потому что это многомодульная сборка, и я не хочу редактировать pom каждого модуля.
Есть skip.tests
и maven.test.skip
и skipTests
которые останавливаются все тесты, и skipITs
, которые останавливают только отказоустойчивый плагин.
Итак, есть ли флаг командной строки для Maven skipITs
, но вместо этого с функциональностью «onlyITs»?
maven
build
integration-testing
maven-surefire-plugin
maven-failsafe-plugin
Мэтью Джиллиард
источник
источник
maven.test.skip
илиskipTests
?skipTests
пропускает только верные тесты, а не тест на отказоустойчивость! Может быть, это новая функция?Ответы:
Я обнаружил, что самый простой способ пропустить только верные тесты - это настроить верный ( но не безотказный ) следующим образом:
Это позволяет вам запускать
mvn verify -Dskip.surefire.tests
и пропускает только верные, но не безопасные тесты; он также выполнит все другие необходимые фазы, включая предварительную интеграцию и постинтеграцию, а также выполнитverify
задачу, которая необходима для фактического сбоя сборки maven в случае сбоя тестов интеграции.Обратите внимание, что это переопределяет свойство, используемое для указания того, что тесты должны быть пропущены, поэтому, если вы предоставите канонический
-DskipTests=true
, surefire проигнорирует его, но отработает отказоустойчивое, что может быть неожиданным, особенно если у вас уже есть существующие сборки / пользователи, которые уже указали этот флаг. Простой обходной путь, кажется, по умолчаниюskip.surefire.tests
к значениюskipTests
в вашем<properties>
разделе pom:Если вам нужно, вы можете предоставить аналогичный параметр, называемый
skip.failsafe.tests
отказоустойчивым, однако я не нашел в этом необходимости - поскольку модульные тесты обычно выполняются на более ранней стадии, и если я хочу запускать модульные тесты, но не интеграционные тесты, я бы запустилtest
фазы вместоverify
фазы. Ваш опыт может отличаться!Эти
skip.(surefire|failsafe).tests
свойства, вероятно, должны быть интегрированы в сам верный / отказоустойчивый код, но я не уверен, насколько сильно он нарушит принцип «они точно такой же плагин, за исключением 1 крошечного различия».источник
<skipTests>false</skipTests>
прежнему работает с любой комбинацией -DskipTests или -Dskip.surefire.tests, поскольку аргументы командной строки, кажется, перезаписывают свойства stackoverflow.com/questions/13708738 /… Вы можете добавить это к своему решению<skipTests>${skip.surefire.tests}</skipTests>
не работает сmaven-surefire-plugin
версией3.0.0-M3
. Все верные тесты все еще работают. Кто-нибудь еще нашел это? Приведенное ниже решение Шона Патрика Флойда работает.Обходной путь будет вызывать:
Правда, это некрасиво, но может решить вашу проблему.
Или (еще один взлом):
Ссылка:
surefire:test#test
surefire:test#failIfNoTests
источник
verify
вместоintegration-test
второго решения.failsafe:verify
в конец первого hack (mvn clean test-compile failsafe:integration-test failsafe:verify
), сборка будет неудачной, если один из тестов интеграции не пройден.Я использую код из блога Антонио Гонсалвеса , который отлично работает.
Вы можете использовать следующие свойства:
-DskipUTs=true
для пропуска верных тестов.-DskipITs=true
за пропуск безотказных тестов.-DskipTests=true
за пропуск всех тестов.Это
pom.xml
выглядит следующим образом:источник
skipITs
это используется по умолчанию.Надеюсь это поможет!
Попробуйте запустить тестирование только с FailSafe (плагин для интеграционного теста - он позволит вам запускать только интеграционные тесты с такими именами, по умолчанию: * / IT .java, ** / IT.java, * /*ITCase.java ;, но вы можете легко изменить это из файла pom)
А когда вы хотите использовать только SureFire (плагин для юнит-тестирования)
или один тест одновременно с:
источник
Мне так нравится, поэтому все фазы обычно выполняются:
источник
Чтобы расширить комментарии от @danidemi и @GuillaumeHusta:
Таким образом, чтобы пропустить юнит-тесты, но не интеграционные тесты, вы можете сделать это, если вы используете последнюю версию плагина Failsafe:
(пожалуйста, дайте упомянутые комментарии, если это поможет вам)
источник
Попробуйте запустить интеграцию или юнит-тесты в отдельном профиле. Тогда вы можете просто включить / отключить профиль.
источник