Java 使用诱惑捕捉失败时的屏幕截图

Java 使用诱惑捕捉失败时的屏幕截图,java,maven,junit,webpage-screenshot,allure,Java,Maven,Junit,Webpage Screenshot,Allure,我一直在玩诱惑框架,我认为如果发生了任何错误/失败(基本上是任何不成功的事情),我希望捕获一个屏幕截图 我正在使用Java/Junit/Maven 我见过使用@Rule的各种方法,但我不确定这是否能在报告中保存屏幕截图 我原以为会有一个测试用例状态或者一些我可以检查的东西,作为拆卸的一部分,但没有找到任何东西 有人有什么想法吗?JUnit规则这是在失败时保存屏幕截图的默认方法。例如: @Rule public TestWatcher screenshotOnFailure = new TestW

我一直在玩诱惑框架,我认为如果发生了任何错误/失败(基本上是任何不成功的事情),我希望捕获一个屏幕截图

我正在使用Java/Junit/Maven

我见过使用@Rule的各种方法,但我不确定这是否能在报告中保存屏幕截图

我原以为会有一个测试用例状态或者一些我可以检查的东西,作为拆卸的一部分,但没有找到任何东西


有人有什么想法吗?

JUnit规则这是在失败时保存屏幕截图的默认方法。例如:

@Rule
public TestWatcher screenshotOnFailure = new TestWatcher() {
    @Override
    protected void failed(Throwable e, Description description) {
        makeScreenshotOnFailure();
    }

    @Attachment("Screenshot on failure")
    public byte[] makeScreenshotOnFailure() {
        return ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES);
    }
};

当我回来的时候,我会尝试一下——它肯定比我在谷歌上找到的其他一些例子简单得多。非常感谢你的帮助——但是我在重写后的一行上得到了以下错误:“new TestWatcher()类型的方法失败(Throwable,Description){}必须重写或实现一个超类型方法”-我不知道为什么。还有,我是不是有点胖,但我没有被要求导入覆盖(或者这是来自规则导入吗?)好的,错误是我有一个现有的导入,但我没有删除它,它发生冲突。但是,没有生成任何屏幕截图,因为在
@after
代码块(我用来杀死活动浏览器)之后调用了这个失败的代码块-这是我的错误还是我忘记添加了什么?是的,JUnit在
@after
方法之后执行规则,因此,您可以使用
TestWatcher
中的
finished
方法杀死浏览器,这是否意味着必须从我现有的
@After
方法中删除所有brower.close()?或者是否有一些逻辑可以放在后面(如果没有错误,请关闭浏览器,否则保持其活动状态)?