Heim > Java > javaLernprogramm > Hauptteil

Wie führe ich Cucumber-Feature-Dateien parallel mit verschiedenen Browsern und Tags aus?

Barbara Streisand
Freigeben: 2024-10-29 16:49:02
Original
988 Leute haben es durchsucht

How to execute Cucumber feature files in parallel with different browsers and tags?

Gurken-Feature-Dateien parallel ausführen

Problem: Mehrere Gurken-Feature-Dateien, die jeweils mit unterschiedlichen Tags verknüpft sind, müssen parallel ausgeführt werden. mit bestimmten Dateien, die bestimmten Browsern zugewiesen sind.

Lösung:

Die Verwendung des Open-Source-cucumber-jvm-parallel-plugin bietet eine Funktion: reichhaltige Lösung für die parallele Ausführung von Gurkentests.

  1. Plugin-Konfiguration:

Fügen Sie die folgende Plugin-Konfiguration zur Maven-POM-Datei des Projekts hinzu:

<code class="xml"><dependency>
    <groupId>com.github.temyers</groupId>
    <artifactId>cucumber-jvm-parallel-plugin</artifactId>
    <version>2.1.0</version>
</dependency>
<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>
                <strict>true</monochrome>true</strict>
                <tags>@chrome,@firefox</tags>
                <filterFeaturesByTags>false</filterFeaturesByTags>
                <useTestNG>false</useTestNG>
                <namingScheme>simple</namingScheme>
                <parallelScheme>SCENARIO</parallelScheme>
            </configuration>
        </execution>
    </executions>
</plugin></code>
Nach dem Login kopieren
  1. Zweites Plugin hinzugefügt:

Fügen Sie ein weiteres Plugin hinzu, das die vom vorherigen Plugin generierten Runner-Klassen aufruft:

<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>
Nach dem Login kopieren

Gemeinsame WebDriver-Klasse:

Implementieren Sie eine gemeinsame WebDriver-Klasse:

<code class="java">public class SharedDriver extends EventFiringWebDriver {

    // Singleton WebDriver instance
    private static WebDriver REAL_DRIVER = null;

    // Closing hook for WebDriver
    private static final Thread CLOSE_THREAD = new Thread() {
        @Override
        public void run() {
            REAL_DRIVER.close();
        }
    };

    // WebDriver setup
    static {
        Runtime.getRuntime().addShutdownHook(CLOSE_THREAD);
    }

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

    public static WebDriver CreateDriver() {
        if (REAL_DRIVER == null)
            REAL_DRIVER = new FirefoxDriver();
        setWebDriver(REAL_DRIVER);
        return REAL_DRIVER;
    }

    public static void setWebDriver(WebDriver webDriver) {
        SharedDriver.REAL_DRIVER = webDriver;
    }

    public static WebDriver getWebDriver() {
        return SharedDriver.REAL_DRIVER;
    }

    // Disable closing for shared driver
    @Override
    public void close() {
        if (Thread.currentThread() != CLOSE_THREAD) {
            throw new UnsupportedOperationException("Closing is handled by shutdown hook.");
        }
        super.close();
    }
}</code>
Nach dem Login kopieren

Überlegungen:

  • Die Anzahl der Forks (parallele Threads) sollte mit den verfügbaren Hardwareressourcen und registrierten Knoten übereinstimmen.
  • Der Grid-Hub muss mit -DPOOL_MAX=512 oder höher gestartet werden, um eine große Anzahl (>50) von Threads auszuführen parallel.

Das obige ist der detaillierte Inhalt vonWie führe ich Cucumber-Feature-Dateien parallel mit verschiedenen Browsern und Tags aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage