Я обнаружил, что самый простой способ пропустить только верные тесты - это настроить верный ( но не безотказный ) следующим образом:
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.14</version>
<configuration>
<!-- skips surefire tests without skipping failsafe tests.
Property value seems to magically default to false -->
<skipTests>${skip.surefire.tests}</skipTests>
</configuration>
</plugin>
Это позволяет вам запускать mvn verify -Dskip.surefire.tests
и пропускает только верные, но не безопасные тесты; он также выполнит все другие необходимые фазы, включая предварительную интеграцию и постинтеграцию, а также выполнит verify
задачу, которая необходима для фактического сбоя сборки maven в случае сбоя тестов интеграции.
Обратите внимание, что это переопределяет свойство, используемое для указания того, что тесты должны быть пропущены, поэтому, если вы предоставите канонический -DskipTests=true
, surefire проигнорирует его, но отработает отказоустойчивое, что может быть неожиданным, особенно если у вас уже есть существующие сборки / пользователи, которые уже указали этот флаг. Простой обходной путь, кажется, по умолчанию skip.surefire.tests
к значению skipTests
в вашем <properties>
разделе pom:
<properties>
<skip.surefire.tests>${skipTests}</skip.surefire.tests>
</properties>
Если вам нужно, вы можете предоставить аналогичный параметр, называемый skip.failsafe.tests
отказоустойчивым, однако я не нашел в этом необходимости - поскольку модульные тесты обычно выполняются на более ранней стадии, и если я хочу запускать модульные тесты, но не интеграционные тесты, я бы запустил test
фазы вместо verify
фазы. Ваш опыт может отличаться!
Эти skip.(surefire|failsafe).tests
свойства, вероятно, должны быть интегрированы в сам верный / отказоустойчивый код, но я не уверен, насколько сильно он нарушит принцип «они точно такой же плагин, за исключением 1 крошечного различия».
maven.test.skip
илиskipTests
?