>Java >java지도 시간 >BDD 테스트 속도를 높이기 위해 Cucumber를 병렬 실행과 함께 사용하려면 어떻게 해야 합니까?

BDD 테스트 속도를 높이기 위해 Cucumber를 병렬 실행과 함께 사용하려면 어떻게 해야 합니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-02 17:30:29895검색

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>

생성된 Runner 클래스 호출

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>

공유 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)를 늘립니다.

위 내용은 BDD 테스트 속도를 높이기 위해 Cucumber를 병렬 실행과 함께 사용하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.