0

J'essaie de lancer des tests TestNG parallèles de Maven en utilisant Surefire, mais avec peu de succès jusqu'à présent.Essayer de lancer des tests TestNG parallèles à partir de Maven en utilisant Surefire

Ma suite a 4 tests, mais Maven est en train de faire les tests un à la fois, en série. Ce n'est que lorsqu'un essai se termine que le suivant commence.

Je vous serais très reconnaissant si vous pouviez regarder la config que j'utilise et laissez-moi savoir si vous repérez quelque chose qui ne va pas ou avez des suggestions générales.

Voici comment surefire est configuré dans pom.xml: -

<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <version>2.20.1</version> 
     <configuration> 
      <parallel>classes</parallel> 
      <threadCount>3</threadCount> 
      <testFailureIgnore>true</testFailureIgnore> 
      <suiteXmlFiles> 
       <suiteXmlFile>src/main/MyTestSuite.xml</suiteXmlFile> 
      </suiteXmlFiles> 
     </configuration> 
    </plugin> 

Ceci est mon fichier de suite (MyTestSuite.xml): -

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 

    <suite name="My Custom suite" parallel="classes"> 
     <parameter name="driver.type" value="CHROME"/> 
     <parameter name="environment" value="DEV"/> 
     <parameter name="timeout" value="5000"/> 
     <parameter name="maxAttempts" value="20"/> 
     <parameter name="logLevel" value="INFO"/> 
     <parameter name="driver.quit" value="true"/> 
     <suite-files> 
      <suite-file path="./Test1.xml"/> 
      <suite-file path="./Test2.xml"/> 
      <suite-file path="./Test3.xml"/> 
      <suite-file path="./Test4.xml"/> 
     </suite-files> 
    </suite> 

Et voici un exemple de l'un des les fichiers de la suite individuelle (Test1.xml): -

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 
<suite name="Test Suite 1" parallel="classes"> 
    <test verbose="10" name="Test1" annotations="JDK"> 
     <classes> 
      <class name="com.me.test.Test1" /> 
     </classes> 
    </test> 
</suite> 

Les tests s'exécutent avec succès, mais en série, pas en parallèle. Toutes les suggestions seront les bienvenues. Je n'ai pas eu de problème pour réussir mes tests Cucumber en parallèle, mais pas de chance avec TestNG. Merci pour la lecture.

Répondre

1

Vous travaillez avec une suite de suites. Par défaut, lorsque TestNG voit une suite de suites, il les exécute en séquence, sauf instruction contraire.

Dans votre cas, vous pouvez déclencher l'exécution de la suite parallèle en configurant votre plugin Surefire comme ci-dessous:

Tout d'abord ajouter des propriétés comme ci-dessous

<properties> 
    <threads>2</threads> 
    <file>src/test/resources/MyTestSuite.xml</file> 
</properties> 

puis définir le plugin Surefire comme ci-dessous:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.20.1</version> 
    <configuration> 
     <suiteXmlFiles>${file}</suiteXmlFiles> 
     <skipTests>false</skipTests> 
     <properties> 
      <property> 
       <name>suitethreadpoolsize</name> 
       <value>${threads}</value> 
      </property> 
     </properties> 
    </configuration> 
</plugin> 

Vous pouvez maintenant exécuter vos tests en utilisant la commande mvn clean test -Dthreads=1

Pour plus de détails sur l'exécution parallèle et les suites en cours en parallèle sans utiliser une suite de suites, vous pouvez vous référer à mon article de blog here.

+0

Excellente réponse, et de très bonnes informations sur le blog aussi. Je vous remercie. Je pense que je vais m'éloigner de la suite de suites approche et adopter l'approche dans votre blog. Je pense que le format de la suite de suites est juste une caractéristique restante de la façon dont le projet a été organisé historiquement. Il est temps de le réorganiser! –