J'ai un projet multi-module et j'ai défini la sécurité intrinsèque dans le pom racine comme ceci:
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.19</version>
<configuration>
<includes>
<include>**/*IntegrationTest.Java</include>
<include>**/*JourneyTest.Java</include>
<include>**/*CucumberFeatureTest.Java</include>
</includes>
</configuration>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19</version>
<configuration>
<excludes>
<exclude>**/*IntegrationTest.Java</exclude>
<exclude>**/*JourneyTest.Java</exclude>
<exclude>**/*CucumberFeatureTest.Java</exclude>
</excludes>
</configuration>
</plugin>
Failsafe n'est défini nulle part ailleurs dans mes autres poms. Si je lance mvn verify
, il ignore les tests d'intégration (il exécute des tests unitaires). Mais si je lance mvn test-compile failsafe:integration-test
, il exécute des tests d'intégration.
Je suppose que la sécurité intégrée est censée fonctionner dans ces deux situations. Alors pourquoi ne fonctionne-t-il pas lorsque je tape mvn verify
?
UPDATE: Je viens de remarquer que cela était lié aux tags suivants:
<build>
<pluginManagement> <!-- oops -->
<plugins>
<plugin>
Je pense que cela explique la cause, mais je ne suis pas sûr de savoir pourquoi unit les tests fonctionnent toujours comme prévu avec mvn verify
et mvn test
. Pourquoi le surefire fonctionne-t-il différemment du fail-safe à cet égard?
Vous devez lier l'objectif de test d'intégration de failafe aux phases integration-test
et verify
de maven. Par défaut, le plug-in fail-safe n'est pas inclus dans un projet Vanilla
maven. Vous devez l'ajouter. Ainsi, même s'il existe un cycle de vie integration-test
, celui-ci n'est pas inclus par défaut (enfin, au moins, il n'exécute pas le maven-failsafe-plugin
). Vous l'ajoutez aux phases integration-test
et verify
(il a besoin des deux, la construction à la phase verify
échouera uniquement [si les tests d'intégration précédents échouent], de sorte que la phase du cycle de vie post-integration
puisse toujours exécuter et nettoyer les ressources, d'où le nom "fail safe").
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.19</version>
<configuration>
<includes>
<include>**/*IntegrationTest.Java</include>
<include>**/*JourneyTest.Java</include>
<include>**/*CucumberFeatureTest.Java</include>
</includes>
</configuration>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
To activate plugin for IntegrationTest,
add declaration maven-surefire-plugin at plugins/plugin:
<plugins>
...
...
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
</plugin>
</plugins>
</build>