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

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

Barbara Streisand
Barbara StreisandOriginal
2024-10-29 16:49:021078Durchsuche

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

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>

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

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