52 votes

Comment exécuter un test individuel dans la cible de test d'intégration dans Maven

Nous avons des centaines de tests définis pour notre intégration-la phase de test du cycle de vie de maven, et ils prennent beaucoup de temps pour terminer.

Ce que je veux faire est de lancer juste un test dans l' integration-test. J'ai essayé de faire :

mvn -Dtest=<my-test> integration-test

mais cela ne fonctionne pas. L' -Dtest s'exécute uniquement les tests dans l'unité de test objectif, non pas de l'intégration-phase de test. J'ai essayé de l' -Dintegration-test=<my-test> au lieu de cela, et qui a été ignorée.

Est-il un moyen de le faire ?


Ma configuration est la suivante:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <executions> 
        <execution> 
            <id>surefire-it</id> 
            <phase>integration-test</phase> 
            <goals> 
                <goal>test</goal> 
            </goals> 
            <configuration> 
                <excludes> 
                    <exclude>none</exclude> 
                </excludes> 
                <includes>
                    <include>**/api/**</include> 
                </includes> 
    ..... 

49voto

A Lee Points 3052

Si vous utilisez le plug - in de sécurité intégrée Maven , vous pouvez exécuter un seul test d'intégration via

 mvn -Dit.test=your.TestCase verify
 

Consultez la documentation du plug-in à sécurité intégrée pour plus d'informations .

31voto

Lyle Points 1257

Le Failsafe documentation aurait vous spécifiez le test comme suit:

mvn -Dit.test=BrokenIT verify

Cependant, -Dit.le test ne semble pas fonctionner plus longtemps. Plutôt, le même paramètre permet de spécifier une Surefire test apparemment le travail pour le Failsafe ainsi. Par exemple:

mvn -Dtest=WorksIT verify

J'ai déposé un bug (EDIT: qui a été fermé comme "Impossible à Reproduire" dans 2.12) pour corriger la documentation.

3voto

Peter Cooper Jr. Points 1017

J'ai rencontré des difficultés et j'ai créé un profil supplémentaire à utiliser lorsque je voulais exécuter un seul test d'intégration. J'espère avoir réussi à extraire juste la bonne partie ici:

     <profile>
        <id>integrationTestSingle</id>
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>surefire-it</id>
                            <phase>integration-test</phase>
                            <goals>
                                <goal>test</goal>
                            </goals>
                            <configuration>
                                <includes>
                                    <include>**/integration/**/${test}.java</include>
                                </includes>
                                <skipTests>false</skipTests>
                            </configuration>
                        </execution>
                    </executions>
                    <configuration>
                        <argLine>-Xms256M -Xmx768M -XX:MaxPermSize=256M</argLine>
                    </configuration>
                </plugin>

                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>default-test</id>                                
                            <configuration>
                                <skipTests>true</skipTests>
                            </configuration>
                        </execution>
                    </executions>

                </plugin>
            </plugins>
        </build>
    </profile>
 

Maintenant, j'appelle maven avec le profil integrationTestSingle et avec -DfailIfNoTests=false -Dtest=NameOfTest , et il n'exécute aucun des tests réguliers pendant la phase "test" régulière, et exécute uniquement le test NameOfTest pendant la phase de test d'intégration.

2voto

James Kingsbery Points 3460

Je ne suis pas sûr de JUnit, mais pour TestNG, la stratégie serait de définir un fichier XML de suite avec un seul test, puis dans votre POM, configurez le plugin surefire pour ne l'exécuter que. Dans votre POM, vous auriez quelque chose comme ça (avertissement, ce n'est pas testé):

   <plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <executions>
      <execution>
        <phase>integration-test</phase>
        <configuration>
          <suiteXmlFiles>
            <suiteXmlFile>single-test.xml</suiteXmlFile>
          </suiteXmlFiles>
        </configuration>
        <goals>
          <goal>run</goal>
        </goals>
      </execution>
    </executions>
  </plugin>
 

Pour configurer le fichier de la suite, voir http://testng.org/doc/documentation-main.html

1voto

user1036 Points 21

J'ai recréé un rapport de bogue pour le plug-in de sécurité intégrée Maven dans la version 2.12:

http://jira.codehaus.org/browse/SUREFIRE-1085

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X