Heim >Java >javaLernprogramm >Wie kann ich Cucumber mit paralleler Ausführung verwenden, um meine BDD-Tests zu beschleunigen?

Wie kann ich Cucumber mit paralleler Ausführung verwenden, um meine BDD-Tests zu beschleunigen?

Linda Hamilton
Linda HamiltonOriginal
2024-11-02 17:30:29895Durchsuche

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

Paralleles Ausführen von Cucumber-Feature-Dateien

Einführung

In modernen Testumgebungen kann die parallele Testausführung die Effizienz und Geschwindigkeit von Testprozessen erheblich verbessern. Cucumber, ein beliebtes Framework für verhaltensgesteuerte Entwicklung (BDD), ermöglicht die parallele Ausführung von Feature-Dateien.

Plugin-basierter Ansatz

Um eine parallele Ausführung in Cucumber zu erreichen, können Sie das Gurken-Framework verwenden. jvm-parallel-plugin. Dieses Plugin erstellt dynamisch Testläuferklassen, die parallel ausgeführt werden können.

Konfiguration

  1. Plugin zu pom.xml hinzufügen:
<code class="xml"><dependency>
  <groupId>com.github.temyers</groupId>
  <artifactId>cucumber-jvm-parallel-plugin</artifactId>
  <version>2.1.0</version>
</dependency></code>
  1. Konfigurieren Sie das Plugin in 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>

Generierte Runner-Klassen aufrufen

Fügen Sie ein Maven Surefire-Plugin hinzu um die generierten Runner-Klassen parallel aufzurufen:

<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

Um Tests parallel auszuführen, muss die WebDriver-Instanz innerhalb der Tests gemeinsam genutzt und nicht explizit geschlossen werden. Die SharedDriver-Klasse erreicht Folgendes:

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

Zusätzliche Überlegungen

  • Parallele Ausführung und Raster: Für eine optimale Leistung verwenden Sie ein Raster mit ausreichend Knoten (registrierte Browser). mit dem Hub).
  • Hub-Speicher: Erhöhen Sie die Poolgröße (z. B. -DPOOL_MAX=512) für Hub-Installationen mit einer hohen Anzahl von Knoten (50).

Das obige ist der detaillierte Inhalt vonWie kann ich Cucumber mit paralleler Ausführung verwenden, um meine BDD-Tests zu beschleunigen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn