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

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

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

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

我通常在@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(); } } 

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