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

Smo*_*oke 6 java junit selenium unit-testing cucumber-jvm

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

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

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

nil*_*esh 9

我通常在@After钩子中截取屏幕截图,在每个黄瓜场景之后调用它.@Afterhook方法采用特殊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();
        }
    }
Run Code Online (Sandbox Code Playgroud)