Question

À l’heure actuelle, 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?

Était-ce utile?

La solution

Il existe un numéro ouvert pour ces , il n’ya donc aucun moyen élégant de le faire. ceci.

Il serait beaucoup plus simple pour vous de choisir un cadre et de vous y tenir.

Modifier: ma réponse précédente ne fonctionne pas car vous ne pouvez pas spécifier de dépendances lors de l'exécution. J'ai essayé quelques approches, mais le mieux que je puisse gérer est de créer un profil pour la dépendance TestNG afin de pouvoir basculer entre les tests TestNG et JUnit. Il ne semble pas y avoir de moyen d'exécuter les tests TestNG et Junit 4. .

Autre point à noter: vous pouvez lancer vos tests JUnit à partir de TestNG . , mais je pense que cela ne fonctionne que pour les tests JUnit 3.

Autres conseils

Méthode officielle avec la sélection des fournisseurs .

  

Vous pouvez également spécifier plusieurs fournisseurs comme dépendances. Ils seront tous exécutés et produiront un rapport commun . Cela peut être particulièrement utile avec les fournisseurs externes, car il existe peu de cas d'utilisation pour combiner les fournisseurs inclus.

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

Plus d'informations à ce sujet: Mélange des tests TestNG et JUnit dans un module Maven - Édition 2013

Lien actuel dans exemples de maven-surefire-plugin . Recherchez " Exécution des tests TestNG et JUnit ".

Vous voudrez configurer le fournisseur de test pour qu'il ignore les tests junit comme suit:

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.18.1</version>
    <configuration>        
    <properties>
        <property>
            <name>junit</name>
            <value>false</value>
         </property>
    </properties>        
    </configuration>
    [...providers as dependecies, see above...]
</plugin>

J'ai un meilleure solution .

L’idée est de créer deux exécutions du plug-in maven-surefire , une pour JUnit, une pour TestNG. Vous pouvez désactiver TestNG ou JUnit par exécution en spécifiant un non existant junitArtifactName ou testNGArtifactName :

<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>

Il y a une autre issue pour cela. Vous pouvez également demander à TestNG d’exécuter des scénarios de test Junit. Vous trouverez ci-dessous un exemple de testng.xml permettant d'exécuter tous les cas de test.

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
 
<suite name="TestAll">
 
	<test name="junitTestCases" junit="true">
		<packages>
			<package name="com.test.*" />
			
		</packages>
	</test>
 
 <test name="testNGTestCases" >
		<packages>
			<package name="com.test.*" />
			
		</packages>
	</test>
</suite>

Merci pour 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>

Pour JUnit ---

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

De même, utilisez la dépendance pour TestNG lorsque nécessaire

J'ai découvert que la solution consistait à forcer le plugin sure-fire à utiliser JUnit. Je l'ai fait en annulant le plugin surefire dans le projet spécifique comme suit. La dépendance oblige à 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>

Basé sur les solutions précédentes. J'ai trouvé que cela fonctionnait mieux pour nous. TestNG essayait de lancer d’anciens tests JUnit. Nous avons évité cela en nommant tous les tests TestNG différemment (par exemple * TestNG.java). Ci-dessous se trouve la configuration avec deux exécutions de surefire-plugin.

    <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.12.4</version>
            <configuration>           
                <testNGArtifactName>none:none</testNGArtifactName>   
                <excludes>
                    <exclude>**/*TestNG.java</exclude>
                </excludes> 
            </configuration>
            <executions>
                <execution>
                    <id>test-testng</id>
                    <phase>test</phase>
                    <goals>
                        <goal>test</goal>
                    </goals>
                    <configuration> 
                        <junitArtifactName>none:none</junitArtifactName>          
                        <testNGArtifactName>org.testng:testng</testNGArtifactName>   
                        <includes>
                            <include>**/*TestNG.java</include>
                        </includes>
                        <excludes>
                            <exclude>**/*Test.java</exclude>
                        </excludes> 
                    </configuration>
                </execution>
            </executions>
        </plugin>

J'ai trouvé une solution pour exécuter les deux types de test avec TestNG sans changer la configuration de votre outil de génération.

J'ai testé avec Gradle mais je devrais aussi travailler avec Maven.

Notez que cela exécutera les tests JUnit dans TestNG, mais pas l'inverse.

L'astuce consiste à utiliser les annotations des deux frameworks dans les classes de test et à utiliser les assertions TestNG pour la compatibilité JUnit.

import static org.testng.AssertJUnit.*;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;

@org.testng.annotations.Test
public final class ApplicationTest {

    @org.testng.annotations.BeforeClass
    @BeforeClass
    public static void setup () {}

    @org.testng.annotations.AfterClass
    @AfterClass
    public static void cleanup () {}

    @Test public void json () throws IOException {
        assertTrue (true);
    }
}

En utilisant ce hack, vous pouvez facilement exécuter des tests JUnit existants avec TestNG, ce qui vous aide à les migrer lorsque le temps le permet.

J'espère que ça aide!

pour Junit cela a résolu mon problème

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

si vous spécifiez simplement le fournisseur de test, il exécutera les tests junit et testng tous les tests une fois
il n'y a donc pas de restriction à la désignation des tests.

versions du plugin:
surefire-plugin 2.16 (les fournisseurs junit47 et testng ont tous les deux la version 2.16)
dépendance de test 6.8.7
Dépendance Junit 4.7

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.0</version>
            <configuration>
                <source>${java.version}</source>
                <target>${java.version}</target>
            </configuration>
        </plugin>
        <!-- ********* Skip Test for Success BUILD ******** -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.10</version>
            <configuration>
                <skip>true</skip>
            </configuration>
        </plugin>
        <!-- *********************************************** -->
    </plugins>
</build>

<profiles>
    <!-- ********** Profiles for run test cases ************ -->
    <!-- Profile for run JUnit test dependent tests -->
    <profile>
        <id>junit-tests</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.10</version>
                    <configuration>
                        <skip>false</skip>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>org.apache.maven.surefire</groupId>
                            <artifactId>surefire-junit47</artifactId>
                            <version>2.10</version>
                        </dependency>
                    </dependencies>
                </plugin>
            </plugins>
        </build>
    </profile>

    <!-- Profile for run TestNG dependent tests -->
    <profile>
        <id>testNG-tests</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.10</version>
                    <configuration>
                        <skip>false</skip>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>

    <!-- ***************************************************** -->
</profiles>
  

Ensuite, lancez simplement: mvn test -Pjunit-tests (pour exécuter le test sur Junit) ou mvn test -PtestNG-tests (pour TestNG test).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top