Cucumber浏览器退出时的并行执行问题&;线程
我正在尝试将cucumber升级为使用TestNg的并行执行。然而,我面临着浏览器退出的问题 我在pom.xml中将浏览器实例设置为3,如下所示Cucumber浏览器退出时的并行执行问题&;线程,cucumber,cucumber-jvm,Cucumber,Cucumber Jvm,我正在尝试将cucumber升级为使用TestNg的并行执行。然而,我面临着浏览器退出的问题 我在pom.xml中将浏览器实例设置为3,如下所示 <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <versio
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.0</version>
<configuration>
<properties>
<property>
<name>dataproviderthreadcount</name>
<value>3</value>
</property>
</properties>
</configuration>
然而,我看到线程Id只打印了2个实例,尽管它在3个不同的浏览器中执行所有3个场景。
但是对于hooks中的退出浏览器代码,我看到所有3个浏览器都打印了线程id
钩子有以下代码:
@After(order = 2)
public void takeScreenShot(Scenario scenario) {
byte[] screenshot = ((TakesScreenshot) util.driver).getScreenshotAs(OutputType.BYTES);
scenario.embed(screenshot, "image/png");
}
@After(order = 1)
public void createTestRun(Scenario scenario) {
<Some piece of code>
}
@After(order = 0)
public void validate(Scenario scenario) {
if (!scenario.isFailed()) {
LOGGER.info("Log something");
} else {
LOGGER.error("Test Failed");
if (world.orderType != null) {
SupportMethods.printErrors();
}
}
System.out.println("QUIT Thread ID:" + Thread.currentThread().getId()); // I see this ID is being called every time
util.driver.quit();
}
public class util {
public static WebDriver driver;
<some piece of code>
}
不要让你的司机静止不动!使用DI在步骤之间共享状态(util类的一个实例):@mpkorstanje框架中有许多静态引用,我想即使我删除静态驱动程序,这个问题也会存在?还有其他更好的方法吗?没有。如果有静态引用,就不能并行运行。它们在线程之间共享,这是您不想要的。您必须先重构测试框架才能使用DI。@mpkorstanje OkThanks@mpkorstanje有没有办法通过maven命令或从某个地方传递来控制线程数?
public class util {
public static WebDriver driver;
<some piece of code>
}
util.driver = new ChromeDriver(options);