java - JUnit测试失败钩子上的黄瓜

时间:2014-01-20 05:44:09

标签: java unit-testing selenium junit cucumber-jvm

我们使用Cucumber-JVM编写验收测试脚本,使用JUnit执行它们(通过JUnit Cucumber运行器)。由于这些测试涉及Selenium WebDriver,我希望能够在我的测试失败时拍摄屏幕截图(我有代码)。

如果我只是添加一个WebDriver onException钩子,那么断言失败时就不会截取屏幕截图。我希望能够将一个JUnit执行监听器添加到Cucumber运行程序中,但API似乎不支持这一点(在Cucumber.class上没有addListener方法)。

有人可以帮忙吗?谢谢团队。

2 个答案:

答案 0 :(得分:9)

我通常在每个黄瓜场景后调用的@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();
        }
    }

答案 1 :(得分:0)

如果你在Selenium面前使用Geb,我想你可以使用geb.Browser.report()来截取屏幕截图。