47 votes

Comment exécuter des tests JUnit et TestNG dans le même projet en utilisant maven-surefire-plugin?

En ce moment, j'ai les deux types de tests mais quand je dis "test mvn", il exécute uniquement les tests TestNG et non Junit. Je veux exécuter les deux l'un après l'autre. Une idée ?

56voto

MariuszS Points 7842

Officiel avec la sélection de fournisseurs.

Vous pouvez également spécifier plusieurs fournisseurs comme des dépendances, et ils seront tous d'exécuter et produire un rapport commun. Cela peut être particulièrement utile avec les prestataires externes, puisqu'il y a peu de cas d'utilisation pour la combinaison de l'compris les fournisseurs.

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.16</version>
    <dependencies>
        <dependency>
            <groupId>org.apache.maven.surefire</groupId>
            <artifactId>surefire-junit47</artifactId>
            <version>2.16</version>
        </dependency>
        <dependency>
            <groupId>org.apache.maven.surefire</groupId>
            <artifactId>surefire-testng</artifactId>
            <version>2.16</version>
        </dependency>
    </dependencies>
</plugin>

Plus d'info à ce sujet: le Mélange TestNG et JUnit tests dans un module Maven – édition 2013

15voto

lexicore Points 7723

J'ai une meilleure solution .

L'idée est de créer deux exécutions de maven-surefire-plugin , une pour JUnit, une pour TestNG. Vous pouvez désactiver l'un de TestNG ou JUnit par exécution en spécifiant junitArtifactName ou testNGArtifactName inexistant:

 <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <executions>
        <execution>
            <phase>test</phase>
            <goals>
                <goal>test</goal>
            </goals>
            <configuration> 
                <testNGArtifactName>none:none</testNGArtifactName>
            </configuration>
        </execution>
        <execution>
            <id>test-testng</id>
            <phase>test</phase>
            <goals>
                <goal>test</goal>
            </goals>
            <configuration> 
                <junitArtifactName>none:none</junitArtifactName>
            </configuration>
        </execution>
    </executions>
</plugin>
 

11voto

Rich Seller Points 46052

Il y a un sujet ouvert pour this, donc il n'y a pas de manière élégante pour ce faire.

Il serait beaucoup plus simple pour vous de choisir un cadre et rester avec elle.

Edit: Ma réponse précédente ne fonctionne pas parce que vous ne pouvez pas spécifier les dépendances dans l'exécution. J'ai tenté quelques approches, mais le mieux que je puisse gérer est de créer un profil pour le TestNG dépendance de sorte que vous pouvez basculer entre TestNG et JUnit test, il ne semble pas être un moyen d'exécuter à la fois TestNG et Junit 4 tests.

Un autre point à noter: Vous pouvez lancer votre JUnit tests de TestNG, mais je pense que cela ne fonctionne que pour JUnit 3 tests.

6voto

Grâce à ce lien ( http://jira.codehaus.org/browse/SUREFIRE-377 ), voici une solution à mon problème précédent (avoir 3 exécutions au lieu de 2)

 <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.10</version>
    <configuration>
       <testNGArtifactName>none:none</testNGArtifactName>
    </configuration>
    <executions>
       <execution>
          <phase>test</phase>
          <goals>
             <goal>test</goal>
          </goals>
          <configuration>
             <junitArtifactName>none:none</junitArtifactName>
             <testNGArtifactName>org.testng:testng</testNGArtifactName>
          </configuration>
       </execution>
    </executions>
</plugin>
 

1voto

Clayton Points 61

J'ai trouvé que la solution était de forcer le plugin sure-fire à utiliser JUnit. J'ai fait cela en remplaçant le plugin surefire dans le projet spécifique comme suit. La dépendance oblige à coup sûr à utiliser JUnit.

 <build>
    <plugins>
        <!-- force sure fire to use junit instead of testng -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.10</version>
            <dependencies>
                <dependency>
                    <groupId>org.apache.maven.surefire</groupId>
                    <artifactId>surefire-junit47</artifactId>
                    <version>2.10</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>
 

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