2014-09-25 72 views

回答

1

感谢您的问题。

倾城的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 
    } 
} 
+0

谢谢! 非常酷的未来,但不工作。 我应该在pom.xml中做一些尝试吗? – VovecUdalec 2014-10-02 20:09:39

+1

将META-INF/services/ru.yandex.qatools.allure.experimental.LifecycleListener文件添加到您的侦听器名称的资源中。阅读关于Java SPI的更多信息 – 2014-10-03 12:25:10

+0

只有一个问题 - 在步骤完成后,fire(StepFinishedEvent)正在运行*,屏幕截图将附加到父步骤/测试 – 2014-10-03 12:26:29

0

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

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

@Step 
private void myStep() { 
    takeScreenshot(); 
    //Step logic 
    takeScreenshot(); 
} 
相关问题