浏览器退出和线程导致黄瓜并行执行问题

时间:2019-09-09 19:21:45

标签: cucumber cucumber-jvm

我正在尝试升级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>

1)执行后,有时我看到1或2个浏览器没有退出。尽管它在钩子中执行quit方法(如下面的代码所示)。

2)其他问题是针对3种情况,我在开始时就打印了线程ID

System.out.println("Start Thread ID:" + Thread.currentThread().getId());

尽管我看到线程ID仅在2个实例上打印,但是它在3种不同的浏览器中执行所有3种情况。 但是对于挂钩中的退出浏览器代码,我看到为所有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(); 
}

util类具有以下代码:

public class util {
    public static WebDriver driver;   
<some piece of code> 
}

在网络驱动程序代码中,我正在将chrome实例分配给该util类驱动程序

util.driver = new ChromeDriver(options);

0 个答案:

没有答案