Maison  >  Article  >  Java  >  Comment puis-je utiliser Cucumber avec une exécution parallèle pour accélérer mes tests BDD ?

Comment puis-je utiliser Cucumber avec une exécution parallèle pour accélérer mes tests BDD ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-02 17:30:29787parcourir

How can I use Cucumber with parallel execution to speed up my BDD tests?

Exécuter des fichiers de fonctionnalités Cucumber en parallèle

Introduction

Dans les environnements de test modernes, l'exécution de tests en parallèle peut améliorer considérablement l'efficacité et la rapidité des processus de test. Cucumber, un framework de développement basé sur le comportement (BDD) populaire, permet l'exécution parallèle de fichiers de fonctionnalités.

Approche basée sur les plugins

Pour réaliser une exécution parallèle dans Cucumber, vous pouvez utiliser le concombre- jvm-parallel-plugin. Ce plugin crée dynamiquement des classes d'exécuteur de test qui peuvent être exécutées en parallèle.

Configuration

  1. Ajoutez le plugin à pom.xml :
<code class="xml"><dependency>
  <groupId>com.github.temyers</groupId>
  <artifactId>cucumber-jvm-parallel-plugin</artifactId>
  <version>2.1.0</version>
</dependency></code>
  1. Configurer le plugin dans pom.xml :
<code class="xml"><plugin>
  <groupId>com.github.temyers</groupId>
  <artifactId>cucumber-jvm-parallel-plugin</artifactId>
  <version>2.1.0</version>
  <executions>
    <execution>
      <id>generateRunners</id>
      <phase>generate-test-sources</phase>
      <goals>
        <goal>generateRunners</goal>
      </goals>
      <configuration>
        <glue>foo, bar</glue>
        <outputDirectory>${project.build.directory}/generated-test-sources/cucumber</outputDirectory>
        <featuresDirectory>src/test/resources/features/</featuresDirectory>
        <cucumberOutputDir>target/cucumber-parallel</cucumberOutputDir>
        <format>json</format>
      </configuration>
    </execution>
  </executions>
</plugin></code>

Invoquer des classes de coureur générées

Ajouter un plugin Maven Surefire pour invoquer les classes d'exécution générées en parallèle :

<code class="xml"><plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>2.19</version>
  <configuration> 
    <forkCount>5</forkCount>
    <reuseForks>true</reuseForks>
    <includes>
      <include>**/*IT.class</include>
    </includes>
  </configuration>
</plugin></code>

Shared WebDriver

Pour exécuter des tests en parallèle, l'instance WebDriver doit être partagée et non explicitement fermée dans les tests. La classe SharedDriver réalise ceci :

<code class="java">public class SharedDriver extends EventFiringWebDriver {
    private static WebDriver REAL_DRIVER = null;

    static {
        Runtime.getRuntime().addShutdownHook(CLOSE_THREAD);
    }

    public SharedDriver() {
        super(CreateDriver());
    }

    public static WebDriver CreateDriver() {
        WebDriver webDriver;
        if (REAL_DRIVER == null)
            webDriver = new FirefoxDriver();
        setWebDriver(webDriver);
        return webDriver;
    }
}</code>

Considérations supplémentaires

  • Exécution parallèle et grille : Pour des performances optimales, utilisez une grille avec suffisamment de nœuds (navigateurs enregistrés avec le hub).
  • Mémoire du Hub : Augmentez la taille du pool (par exemple, -DPOOL_MAX=512) pour les installations Hub avec un nombre élevé de nœuds (50).

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn