J'ai trouvé que le moyen le plus simple de ne sauter que les tests infaillibles est de configurer surefire ( mais pas à sécurité intégrée ) 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 seuls les tests infaillibles, et non infaillibles, seront ignorés; il exécutera également toutes les autres phases nécessaires, y compris la pré-intégration et la post-intégration, et exécutera également l' verify
objectif qui est nécessaire pour échouer réellement votre build maven si vos tests d'intégration échouent.
Notez que cela redéfinit la propriété utilisée pour spécifier que les tests doivent être ignorés, donc si vous fournissez le canonical -DskipTests=true
, surefire l'ignorera mais la sécurité la respectera, ce qui peut être inattendu, surtout si vous avez déjà des builds / utilisateurs spécifiant cet indicateur. Une solution de contournement simple semble être de choisir par défaut skip.surefire.tests
la valeur de skipTests
dans votre <properties>
section du pom:
<properties>
<skip.surefire.tests>${skipTests}</skip.surefire.tests>
</properties>
Si vous en avez besoin, vous pouvez fournir un paramètre analogue appelé skip.failsafe.tests
à sécurité intégrée, mais je ne l'ai pas trouvé nécessaire - car les tests unitaires s'exécutent généralement dans une phase antérieure, et si je veux exécuter des tests unitaires mais pas des tests d'intégration, je l'exécuterais la test
phase au lieu de la verify
phase. Vos expériences peuvent varier!
Ces skip.(surefire|failsafe).tests
propriétés devraient probablement être intégrées dans le code sûr / sécurisé lui-même, mais je ne suis pas sûr de savoir à quel point cela violerait l'éthos «ils sont exactement le même plugin, sauf pour une petite différence».
maven.test.skip
ouskipTests
?