Auparavant, j'utilisais Maven + Selenide + JUnit4 pour mes tests et c'était bien, le fonctionnement en parallèle fonctionnait parfaitement. Exemple:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven.surefire.plugin}</version>
<configuration>
<parallel>all</parallel>
<perCoreThreadCount>true</perCoreThreadCount>
<threadCount>4</threadCount>
<perCoreThreadCount>false</perCoreThreadCount>
<redirectTestOutputToFile>true</redirectTestOutputToFile>
</configuration>
</plugin>
Et dans le travail Jenkins, j'ai pu exécuter des tests (exemple ci-dessous)
mvn -Dtest=TestClassName test
Mes tests tournaient dans 4 navigateurs.
Avant de passer à JUnit5, car je voudrais utiliser des tests en cours par balises, par exemple
@Test
@Tag("smoke")
public void test1() {}
Et exécutez tous les tests marqués comme `` fumée '' par la commande suivante:
mvn -Dtag=smoke test
Mais j'ai eu le problème suivant: l'exécution parallèle ne fonctionne pas et je n'ai toujours pas trouvé de solution. J'ai trouvé ce bug https://github.com/junit-team/junit5/issues/1424
Comment puis-je exécuter des tests en parallèle avec JUnit5?
J'ai essayé d'utiliser dans pom.xml
<forkCount>2</forkCount>
<reuseForks>true</reuseForks>
<parallel>all</parallel>
Cela n'a pas aidé, j'ai créé un fichier junit-platform.properties et je l'ai inséré
junit.jupiter.execution.parallel.enabled = true
junit.jupiter.execution.parallel.config.strategy = fixed
Mais de toute façon, je n'ai pas pu résoudre ce problème.
Enfin j'ai trouvé une solution.
Sur Maven + JUnit5, l'exécution parallèle ne fonctionnera que par classes (pas par les méthodes comme je m'habitue à l'avoir dans JUnit4)
Comment cela peut être implémenté: Il suffit de mettre ces 2 chaînes dans votre pom.xml
:
<forkCount>4</forkCount>
<reuseForks>false</reuseForks>
Exemple:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.0</version>
<configuration>
<forkCount>4</forkCount>
<reuseForks>false</reuseForks>
<properties>
<includeTags>${tag}</includeTags>
</properties>
</configuration>
<dependencies>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-surefire-provider</artifactId>
<version>${junit.platform.version}</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit.jupiter.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-logger-api</artifactId>
<version>${surefire-logger-api}</version>
</dependency>
</dependencies>
</plugin>
Par exemple, vous avez 3 classes avec des tests, donc après avoir exécuté à partir de la console les tests actuels seront créés 3 instances de votre navigateur (une pour chaque classe) et à l'intérieur de chaque classe les tests seront exécutés de manière cohérente, mais les classes sont exécutées en parallèle.
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras