首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理JBehave / Thucydides / Selenium中失败的测试?

如何处理JBehave / Thucydides / Selenium中失败的测试?
EN

Stack Overflow用户
提问于 2014-03-13 14:14:52
回答 1查看 1.2K关注 0票数 0

我对Thucydides / JBehave还是个新手,但还没有在这篇文章中找到任何解决方案。这是我第一次使用Thucydides / JBehave,但之前使用过Selenium。

我有我的.story文件。.story文件列出了5个场景,每个场景都在它自己的POJO java类中实现。e.g

代码语言:javascript
复制
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类中的assert失败后,测试似乎停止了。这意味着我有一个浏览器实例一直放在那里,直到我关闭它。当作为一系列测试运行时,这意味着Selenium网格中的浏览器现在被占用了。

我需要一种方法来检测测试失败,调用页面对象来关闭/退出。

我找不到对应的@Before或@After,它将始终运行,我可以找到它,我可以使用@After来关闭页面对象的webDriver。

我没有使用修昔底德来管理WebDriver生命周期,因为我找不到任何不使用ThucydidesRunner.class的例子。我必须使用ThucydidesRunner.class吗?我从修昔底德的集成JBehave (http://thucydides.info/docs/thucydides/_writing_acceptance_tests_with_jbehave.html)手册中得到的印象是,它并不是必需的。

在这种情况下,其他人如何处理测试失败?

EN

回答 1

Stack Overflow用户

发布于 2014-03-20 14:48:18

我遇到的真正问题是在一次测试失败后关闭浏览器。管理WebDriver的最好方法似乎是使用Thucydides @ManagedDriver注释来处理生命周期。我最终使用了一个非常简单的JUnit运行程序,如下所示

代码语言:javascript
复制
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文件,然后正常启动。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22370500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档