我无法用Cucumber并行执行控制多线程



我已经成功配置了Cucumber并行执行,但默认情况下,一次将创建10个线程。因此,我尝试了使用-Ddataproviderthreadcount=2的maven命令,它成功了。但当我尝试在POM文件中定义这个选项时,它并没有起作用。

我的POM:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>3.0.0-M5</version>
<configuration>
<parallel>both</parallel>
<threadCount>2</threadCount>
</configuration>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
<configuration>
<properties>
<property>
<name>dataproviderthreadcount</name>
<value>2</value>
</property>
</properties>
<suiteXmlFiles>
<suiteXmlFile>src/test/resources/${test.suite}.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</execution>
</executions>

我的黄瓜测试跑步者:

@CucumberOptions(features = "src/test/resources/features", glue = "StepDefinitions", plugin = "pretty")
class runnerOne extends AbstractTestNGCucumberTests {
@Override
@DataProvider(parallel = true)
public Object[][] scenarios() {
return super.scenarios();
}
}

我的测试:

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
<suite name="Suite1" verbose="1">
<listeners>
<listener class-name="Utilities.Listener"></listener>
</listeners>
<test name="Test" >
<classes>
<class name="TestRunners.runnerOne" />
</classes>
</test>
</suite>

为了充分利用Cucumber的TestNG,您应该尝试使用BDDTestFactory2,它是纯TestNG实现。它将每个场景视为TestNG测试,并将带有示例的场景大纲视为数据驱动的测试。因此,它支持不同的并行配置和参数,如线程数、数据提供商线程数等。

在您使用cucumber的情况下,为了支持cucumber中的步骤实现,您将需要QAF-cucumber。使用BDDTestFactory2,它支持以Gherkin格式或BDD2格式编写的特征文件,后者是Gherkin的超级集。

最新更新