ホームページ >Java >&#&チュートリアル >Cucumber 機能ファイルを異なるブラウザーやタグで並行して実行するにはどうすればよいですか?

Cucumber 機能ファイルを異なるブラウザーやタグで並行して実行するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-29 16:49:021127ブラウズ

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

Cucumber フィーチャー ファイルの並列実行

問題: それぞれが異なるタグに関連付けられている複数の Cucumber フィーチャー ファイルを並列で実行する必要があります。特定のファイルを特定のブラウザに割り当てます。

解決策:

オープンソースの cucumber-jvm-Parallel-plugin を利用すると、次の機能が提供されます。キュウリ テストの並列実行のための豊富なソリューション。

  1. プラグイン構成:

次のプラグイン構成をプロジェクトの Maven pom ファイルに追加します:

<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>truetrue</strict>
                <tags>@chrome,@firefox</tags>
                <filterfeaturesbytags>false</filterfeaturesbytags>
                <usetestng>false</usetestng>
                <namingscheme>simple</namingscheme>
                <parallelscheme>SCENARIO</parallelscheme>
            </configuration>
        </execution>
    </executions>
</plugin></code>
  1. 2 番目のプラグインの追加:

前のプラグインによって生成されたランナー クラスを呼び出す別のプラグインを追加します:

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

共有 WebDriver クラス:

共有 WebDriver クラスの実装:

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

考慮事項:

  • フォーク数 (並列スレッド) の数は、利用可能なハードウェア リソースおよび登録されたノードに合わせて調整する必要があります。
  • 多数 (>50) のスレッドを実行するには、グリッド ハブを -DPOOL_MAX=512 以上で開始する必要があります。並行して。

以上がCucumber 機能ファイルを異なるブラウザーやタグで並行して実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。