Un moyen d'exécuter des tests JUnit5 en parallèle?

Gordon Freeman

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.

Gordon Freeman

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

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

JUnit: existe-t-il un moyen intelligent d'effectuer des tests en parallèle?

Possibilité d'exécuter des tests sur des ensembles de données dans un fichier csv `` en parallèle ''

Comment exécuter des tests NUnit dans une classe en parallèle, mais pas avec d'autres tests de classe?

Impossible d'exécuter des tests de concombre en parallèle à l'aide de TestNG et SpringBootTest

Existe-t-il un moyen de forcer Bazel à exécuter des tests en série

Exécuter des fonctions en parallèle

Existe-t-il un moyen d'exécuter des tests sandbox avec pytest, en particulier l'accès au système de fichiers?

Comment exécuter des scripts dépendants en python en parallèle dans le shell?

Existe-t-il un moyen de dire à Cargo d'exécuter ses tests sur le thread principal?

Impossible d'obtenir un fichier python pour exécuter 2 autres fichiers python en parallèle

Comment exécuter des tests pendant le débogage

Exécuter des procédures stockées en parallèle

Existe-t-il un moyen d'exécuter le compilateur mesa pour réduire la taille des fichiers shader?

Dans IntelliJ IDEA, puis-je exécuter uniquement des tests correspondant à un modèle d'expression régulière?

Existe-t-il un moyen d'exécuter le même test junit sur deux jvm différents

Exécuter des tests JUnit avec SBT

Existe-t-il un moyen d'ajouter des arguments en tant que variables pour exécuter une instruction de ligne de commande à partir d'un fichier python

En python, existe-t-il un moyen d'exécuter automatiquement des fonctions dès qu'une classe est définie?

existe-t-il un moyen d'exécuter céleri worker en mode débogage; un peu comme le débogage de flacon?

Existe-t-il un moyen d'exécuter périodiquement des fonctions python non vides?

Le moyen le plus performant d'exécuter les informations de regroupement d'un tableau PHP

Le moyen le plus rapide d'exécuter des calculs sur une liste de listes

Existe-t-il un moyen de faciliter le débogage des tests échouants, sans interruption?

Comment copier des éléments d'un tableau parallèle dans un nouveau tableau parallèle sans doublons en Java?

Existe-t-il un moyen d'empêcher deux programmes Python d'exécuter le même binaire en même temps?

Existe-t-il un moyen d'exécuter des projets complètement différents écrits dans différentes langues sur le même domaine / serveur?

Quel est le but de karate-junit5 lorsque vous pouvez exécuter des tests sans lui?

Comment exécuter des tests et déboguer le projet Google Test dans VS Code?

Comment autoriser une fonction SQL CLR à s'exécuter dans un plan de requête parallèle et avoir également des autorisations d'accès aux données

TOP Lista

CalienteEtiquetas

Archivo