ホームページ  >  記事  >  Java  >  Cucumber を並列実行で使用して BDD テストを高速化するにはどうすればよいですか?

Cucumber を並列実行で使用して BDD テストを高速化するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-02 17:30:29793ブラウズ

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

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

はじめに

最新のテスト環境では、テストの並列実行により、テスト プロセスの効率と速度が大幅に向上します。人気のある動作駆動開発 (BDD) フレームワークである Cucumber では、機能ファイルの並列実行が可能です。

プラグインベースのアプローチ

Cucumber で並列実行を実現するには、cucumber- jvm-パラレルプラグイン。このプラグインは、並列実行できるテスト ランナー クラスを動的に作成します。

構成

  1. プラグインを 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. 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>

生成されたランナー クラスを呼び出す

Maven Surefire プラグインを追加します生成されたランナー クラスを並列で呼び出すには:

<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

テストを並列で実行するには、WebDriver インスタンスを共有し、テスト内で明示的に閉じないようにする必要があります。 SharedDriver クラスはこれを実現します。

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

追加の考慮事項

  • 並列実行とグリッド: 最適なパフォーマンスを得るには、十分なノード (ブラウザーが登録されている) を持つグリッドを使用します。
  • ハブ メモリ: ノード数が多い (50 ) ハブ インストールの場合は、プール サイズ (例: -DPOOL_MAX=512) を増やします。

以上がCucumber を並列実行で使用して BDD テストを高速化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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