问题描述
我已经阅读了Parallel Execution上的文档页面,对于CLI,唯一的选择似乎是使用--threads <COUNT>
标志来增加并行度。但是,这将导致每个方案并行执行。
有没有一种方法可以指示我希望每个功能都可以并行执行,但是该功能中的每个场景都在同一线程上(顺序执行)?
我已经看到使用JUnit和Maven可以做到这一点,但是我使用的是JUnit和Gradle,这似乎不是一个选择。
解决方法
我想你可能想看看Courgette-JVM
它是 cucumber-jvm
的扩展,可以和 gradle 一起运行。它支持 junit
和 testng
以及使用线程的并行测试
您可能需要更改您的 testrunner
类并添加 @CourgetteOptions
并在其中包含 @CucumberOptions
,例如
import courgette.api.CourgetteRunLevel;
import courgette.api.testng.TestNGCourgette;
import cucumber.api.CucumberOptions;
import org.testng.annotations.Test;
@Test
@CourgetteOptions(
threads = 2,runLevel = CourgetteRunLevel.FEATURE,rerunFailedScenarios = true,showTestOutput = true,reportTargetDir = "build",cucumberOptions = @CucumberOptions(
features = "src/test/resources/features",glue = {"utils.hooks","steps"},tags = {"@Web"},plugin = {
"pretty","json:build/cucumber-report/cucumber.json","html:build/cucumber-report/cucumber.html"},strict = true
))
public class TestRunner extends TestNGCourgette {
}
如果您想在示例中查看 Courgette-JVM
,请查看此使用 gradle 的 parallel test execution 示例