Cucumber浏览器退出时的并行执行问题&;线程

Cucumber浏览器退出时的并行执行问题&;线程,cucumber,cucumber-jvm,Cucumber,Cucumber Jvm,我正在尝试将cucumber升级为使用TestNg的并行执行。然而,我面临着浏览器退出的问题 我在pom.xml中将浏览器实例设置为3,如下所示 <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <versio

我正在尝试将cucumber升级为使用TestNg的并行执行。然而,我面临着浏览器退出的问题

我在pom.xml中将浏览器实例设置为3,如下所示

                            <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);