J'ai trouvé la façon la plus simple d'ignorer uniquement infaillible tests est de configurer infaillible (mais pas infaillible) comme suit:
<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>
Cela vous permet d'exécuter mvn verify -Dskip.surefire.tests
et seulement infaillible, pas failsafe, des tests seront ignorés; il permet également de faire fonctionner tous les autres phases nécessaires, y compris la pré-intégration et post-intégration, et permet également de faire fonctionner l' verify
objectif qui est demandé à fait échouer votre maven build si vos tests d'intégration en échec.
Notez que cette redéfinit la propriété permet de spécifier que les tests doivent être ignorés, donc si vous fournissez les canonique -DskipTests=true
, surefire l'ignore, mais failsafe le fera, ce qui peut être inattendu, surtout si vous avez les versions existantes/les utilisateurs en spécifiant que le drapeau. Une solution simple semble être de défaut skip.surefire.tests
de la valeur de skipTests
votre <properties>
de la section de la pom:
<properties>
<skip.surefire.tests>${skipTests}</skip.surefire.tests>
</properties>
Si vous avez besoin, vous pouvez fournir un comme paramètre appelé skip.failsafe.tests
pour le failsafe, cependant, je n'ai pas trouvé nécessaire - parce que les tests unitaires à l'habitude de courir dans une phase antérieure, et si je veux exécuter des tests unitaires, mais pas les tests d'intégration, je voudrais exécuter l' test
de phase au lieu de l' verify
de phase. Votre expérience peut varier!
Ces skip.(surefire|failsafe).tests
propriétés devrait probablement être intégré dans surefire/failsafe code lui-même, mais je ne suis pas sûr combien il serait en violation de la "ils sont exactement le même plugin, sauf pour 1 petite différence" ethos.