JUnit测试失败钩子上的java-Cucumber
我们使用Cucumber JVM编写验收测试脚本,并使用JUnit执行它们(通过JUnit Cucumber runner)。由于这些测试涉及SeleniumWebDriver,我希望能够在测试失败时截图(我有代码) 如果我只是简单地添加一个WebDriver OneException钩子,那么当断言失败时,屏幕截图就不会出现。我希望能够向Cucumber运行程序添加JUnit执行侦听器,但API似乎不支持这一点(Cucumber.class上没有addListener方法)JUnit测试失败钩子上的java-Cucumber,java,unit-testing,selenium,junit,cucumber-jvm,Java,Unit Testing,Selenium,Junit,Cucumber Jvm,我们使用Cucumber JVM编写验收测试脚本,并使用JUnit执行它们(通过JUnit Cucumber runner)。由于这些测试涉及SeleniumWebDriver,我希望能够在测试失败时截图(我有代码) 如果我只是简单地添加一个WebDriver OneException钩子,那么当断言失败时,屏幕截图就不会出现。我希望能够向Cucumber运行程序添加JUnit执行侦听器,但API似乎不支持这一点(Cucumber.class上没有addListener方法) 有人能帮忙吗?感谢
有人能帮忙吗?感谢团队。如果您在Selenium前面使用Geb,我想您可以使用Geb.Browser.report()来截图。我通常在每次场景后调用的
@After
钩子中截图@After
hook方法采用一个特殊的Scenario
对象,以便您可以将屏幕截图嵌入报表中。下面是一个关于如何在场景失败时截图的示例
@After
public void tearDown(Scenario scenario) {
try {
if (scenario.isFailed()) {
final byte[] screenshot = ((TakesScreenshot) driver)
.getScreenshotAs(OutputType.BYTES);
scenario.embed(screenshot, "image/png");
}
} finally {
driver.quit();
}
}
谢谢,效果很好。是否可以在Before/After方法中获取场景的标题或步骤?我想在我的截图中有一个可读的标题。不确定,你为什么要这样做。Cucumber html报告包含标题、标记、Gs、Ws、Ts和屏幕截图信息。场景对象无法检索步骤或标题。它只有关于标签的信息
scenario.getSourceTagNames()
对不起,我是一个彻头彻尾的笨蛋:我发现了如何在一个scenario报告中嵌入数据。谢谢你的帮助。:)您还可以签出QMetry自动化框架,在该框架中,您不需要执行web/mobile自动化所需的所有常见操作。它由一个框架负责,该框架本身具有针对web和移动自动化需求的内置功能。例如,它具有用于断言/验证或测试失败的自动捕获屏幕截图功能,可以使用属性根据需要进行配置。