我对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网格中的broswer现在已被束缚。
我需要一种方法来检测测试失败,调用页面对象来关闭/退出。
我找不到相同的@Before或@After,它总会运行,我可以找到它,我可以使用@After来关闭页面对象的webDriver。
我没有使用Thucydides来管理WebDriver生命周期,因为我找不到任何没有使用ThucydidesRunner.class的示例。 我是否必须使用ThucydidesRunner.class?我对Thucydides手册中与JBehave(http://thucydides.info/docs/thucydides/_writing_acceptance_tests_with_jbehave.html)集成的印象并不表明它是必需的。
在这种情况下,其他人如何处理测试失败?
答案 0 :(得分:0)
我遇到的真正问题是在测试失败后关闭浏览器。 管理WebDriver的最佳方法似乎是使用Thucydides @ManagedDriver注释来处理生命周期。 我最终使用了一个非常简单的JUnit跑步者
public class UserLogin extends ThucydidesJUnitStory
{
@Managed
public WebDriver webdriver;
@ManagedPages(defaultUrl = "http://localhost:8080/dc-bus-main-web")
public Pages pages;
}
当它启动时,它会通过JBehave的命名约定映射到user_login.story文件,然后正常启动。