首页 > 解决方案 > 执行多个 Cucumber 测试的模式是什么

问题描述

我正在尝试使用 Selenium 构建一套 Cucumber 测试。每个测试的第一步都登录到一个 Web 应用程序。

我正在使用 Selenium ChromeDriver,我可以看到 Cucumber 正在使用依赖注入来初始化驱动程序。每次测试完成后,我都想使用新的网络浏览器重新开始,但 Cucumber 坚持使用之前测试中使用的相同驱动程序。我已经尝试了很多事情来从一个干净的点开始。我不确定推荐的方法是什么,我认为您必须使用“Hooks”类,因为它包含在每个测试场景之前和之后运行的方法。这是我目前拥有的:

public class Hooks {

    private final WebDriver driver;

    @Inject
    public Hooks(final WebDriver driver) {
        this.driver = driver;
    }

    @Before
    public void openWebSite() {
    }

    @After
    public void closeSession() {
        driver.close();
    }
}

如您所见,我driver.close()在方法中添加了一条语句@After,但没有看到重新打开或重新创建新会话的方法,并且在下一次测试尝试登录时出现以下异常:

Message: org.openqa.selenium.NoSuchSessionException: no such session

大概是因为它不喜欢我刚刚打电话的事实close()

但实际上,我想告诉 Cucumber,我希望为每个测试场景使用一个全新的驱动程序。

我搜索了 Cucumber 示例,但我发现的所有示例代码都只涉及一个测试。我没有发现任何使用一套测试的东西,目的是做类似于我上面描述的事情。

推荐的模式是什么?

标签: javaunit-testingseleniumcucumberselenium-chromedriver

解决方案


推荐阅读