[java] Java Cucumber에서 병렬 실행 기능 사용하기
Cucumber는 테스트 시나리오를 작성하고 실행하기 위한 테스트 프레임워크입니다. Java 언어를 사용하여 Cucumber 테스트를 작성할 때, 테스트의 실행 시간을 단축시키기 위해 병렬 실행 기능을 사용할 수 있습니다.
병렬 실행 기능의 장점
테스트 스위트에 여러 시나리오가 포함되어있을 때, 병렬 실행은 테스트의 실행 시간을 크게 단축시킬 수 있습니다. 여러 개의 테스트 케이스를 동시에 실행하여 각각의 CPU 코어를 최대한 활용할 수 있으며, 테스트 결과를 빠르게 얻을 수 있습니다.
병렬 실행 기능 사용하기
Java에서 Cucumber를 사용하여 병렬 실행을 구현하려면 cucumber-jvm-parallel-plugin
플러그인을 사용해야 합니다. 다음은 병렬 실행 기능을 사용하는 방법입니다.
pom.xml
파일에 필요한 의존성 추가:
<dependencies>
...
<dependency>
<groupId>com.github.temyers</groupId>
<artifactId>cucumber-jvm-parallel-plugin</artifactId>
<version>5.0.0</version>
</dependency>
...
</dependencies>
cucumber-jvm-parallel-plugin
플러그인 설정 추가:
<build>
...
<plugins>
...
<plugin>
<groupId>com.github.temyers</groupId>
<artifactId>cucumber-jvm-parallel-plugin</artifactId>
<version>5.0.0</version>
<executions>
<execution>
<id>generateRunners-parallel</id>
<phase>generate-test-sources</phase>
<goals>
<goal>generateRunners</goal>
</goals>
<configuration>
<glue>your.package.name</glue>
<outputDirectory>${project.build.directory}/generated-test-sources/cucumber</outputDirectory>
<featuresDirectory>src/test/resources/features</featuresDirectory>
<cucumberOutputDir>${project.build.directory}/cucumber-parallel</cucumberOutputDir>
<format>json</format>
<tags>${cucumber.tags}</tags>
<strict>true</strict>
<monochrome>true</monochrome>
<useTestNG>false</useTestNG>
</configuration>
</execution>
</executions>
</plugin>
...
</plugins>
...
</build>
- 병렬 실행 테스트 코드 작성:
import io.cucumber.testng.AbstractTestNGCucumberTests;
import io.cucumber.testng.CucumberOptions;
import org.testng.annotations.DataProvider;
@CucumberOptions(plugin = {"pretty", "json:target/cucumber-report.json"})
public class ParallelRunCucumberTest extends AbstractTestNGCucumberTests {
@Override
@DataProvider(parallel = true)
public Object[][] scenarios() {
return super.scenarios();
}
}
- 테스트 실행:
mvn clean test
위의 설정과 코드를 사용하여 병렬 실행 기능을 구현할 수 있습니다.
결론
Java Cucumber에서 병렬 실행 기능을 사용하면 테스트의 실행 시간을 단축시킬 수 있습니다. 병렬 실행은 테스트 스위트에서 여러 시나리오를 동시에 실행하여 테스트 결과를 더 빠르게 얻을 수 있습니다.