Eu encontrei a maneira mais simples de ignorar apenas os testes surefire é configurar o surefire ( mas não com segurança ) da seguinte maneira:
<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>
Isso permite que você execute mvn verify -Dskip.surefire.tests
e apenas testes infalíveis, sem falhas, serão ignorados; Ele também executará todas as outras fases necessárias, incluindo pré-integração e pós-integração, e também executará a verify
meta necessária para realmente falhar na sua construção, se seus testes de integração falharem.
Observe que isso redefine a propriedade usada para especificar que os testes devem ser ignorados; portanto, se você fornecer o canônico -DskipTests=true
, o surefire o ignorará, mas o fail-safe o respeitará, o que pode ser inesperado, especialmente se você já tiver compilações / usuários especificando esse sinalizador. Uma solução simples parece ter como padrão skip.surefire.tests
o valor de skipTests
em sua <properties>
seção do pom:
<properties>
<skip.surefire.tests>${skipTests}</skip.surefire.tests>
</properties>
Se necessário, você pode fornecer um parâmetro análogo chamado skip.failsafe.tests
à prova de falhas, no entanto, não o acho necessário - porque os testes de unidade geralmente são executados em uma fase anterior, e se eu quiser executar testes de unidade, mas não testes de integração, eu executaria a test
fase em vez da verify
fase. Suas experiências podem variar!
Essas skip.(surefire|failsafe).tests
propriedades provavelmente devem ser integradas no próprio código infalível / à prova de falhas, mas não tenho certeza de quanto isso violaria o ethos "eles são exatamente o mesmo plugin, exceto por uma pequena diferença".
maven.test.skip
ouskipTests
?