我对 Thucydides / JBehave 很陌生,但还没有找到任何解决方案。这是我第一次使用 Thucydides / JBehave,但之前使用过 Selenium。
我有我的 .story 文件。.story 文件列出了 5 个场景。每个场景都在它自己的 POJO java 类中实现。例如
public class ManagerBypassLoginSteps
{
@Steps
ManagerSteps managerSteps;
@Given("the manager is not logged in")
public void mangerLogsIn()
{
managerSteps.start();
}
@When("the manager goes to a different page")
public void managerToDashboardPage()
{
managerSteps.goesToDashboardPage();
}
@Then("they should see the login page")
public void managerShouldSeeLoginPage()
{
managerSteps.verifyOnLoginPage();
managerSteps.close();
}
}
ManagerSteps 类扩展了 net.thucydides.core.steps.ScenarioSteps,但除此之外它只是一个 POJO。ManagerSteps 调用页面对象 - 所有非常正常的东西,并且按照示例。
在上面的场景中,测试失败,因为代码显示错误消息而不是将用户返回到登录页面 - 很好,安全代码不满足指定的要求(还)但是,在 ManagerSteps 中的断言之后类失败,测试似乎停止。这意味着我有一个浏览器实例就坐在那里,直到我关闭它。当作为一系列测试运行时,这意味着 Selenium 网格中的一个浏览器现在已被占用。
我需要一种方法来检测测试失败,调用页面对象来关闭/退出。
我找不到始终运行的@Before 或@After 等价物,我可以找到它我可以使用@After 来关闭页面对象的webDriver。
我没有使用 Thucydides 来管理 WebDriver 生命周期,因为我找不到任何不使用 ThucydidesRunner.class 的示例。我必须使用 ThucydidesRunner.class 吗?我对与 JBehave 集成的 Thucydides 手册(http://thucydides.info/docs/thucydides/_writing_acceptance_tests_with_jbehave.html)的印象并不表明它是必需的。
在这种情况下,其他人如何处理测试失败?