Я нашел самый простой способ пропустить только верные тесты, это настроить верный (, но не безотказный ) следующим образом:
<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
, верный метод игнорирует его, но отказоустойчивый будет уважать его, что может быть неожиданным, особенно если у вас есть существующие сборки /пользователи, указывающие этот флаг уже.Простой обходной путь, кажется, по умолчанию 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крошечная разница "этос.