如何在@Step注释的mtd之前和之后调用我的方法?

时间:2014-09-25 04:18:57

标签: java junit allure

我想在测试步骤之前和之后制作屏幕截图。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

感谢您的提问。

Allure java适配器具有未记录的功能 - Lifecycle listener

生命周期监听器使用Java SPI

要解决您的问题,只需将以下类添加到类路径

public class EachStepScreenshoter extends LifecycleListener {

    @Override
    public void fire(StepStartedEvent event) {
        takeScreenshot();
    }

    @Override
    public void fire(StepFinishedEvent event) {
        takeScreenshot();
    }

    @Attachment(value="A screenshot")
    private byte[] takeScreenshot() {
        //Return screenshot content
    }
}

答案 1 :(得分:0)

没有特别的解决方案。 Allure使用AspectJ来拦截方法调用并检查存在的注释。如您所知,返回byte []的任何方法的 @Attachment 注释可用于截取屏幕截图。所以我会定义这样的注释方法并在必要时调用它:

@Attachment(value="A screenshot")
private byte[] takeScreenshot() {
    //Return screenshot content
}

@Step
private void myStep() {
    takeScreenshot();
    //Step logic
    takeScreenshot();
}