web-dev-qa-db-fra.com

Pourquoi "mvn verify" n'exécute-t-il pas mes tests d'intégration?

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?

9
Daniel Kaplan

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>
8
JJF
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>
0
question_maven_com