在钩子之后使用黄瓜jvm在Allure报告中附加附件

时间:2016-03-04 10:30:43

标签: cucumber-jvm allure

当步骤失败时使用Allure报告框架,我们可以通过使用@Attachment注释调用方法来附加屏幕截图或日志。

@Attachment(value = "Message", type = "text/plain")
public String attachLog(){
    return "Hello, Test failed!";
}

但这意味着我必须在断言之前的每一步中显式调用此方法(attachLog())。这似乎是不合理的。

在CucumberJvm中,“after”挂钩是附加屏幕截图或日志的好方法。我们通过检查方案状态并根据结果附加屏幕截图/日志来完成此操作。

我尝试在cucumberJvm“after”hook之后调用上面的方法(attachLog())。但不幸的是没有用。

是否有解决方案使这项工作?

干杯 维诺德

1 个答案:

答案 0 :(得分:0)

您可以从ru.yandex.qatools.allure.cucumberjvm.AllureRunListener

覆盖测试失败方法
public class CustomAllureListener extends AllureRunListener {


    @Override
    public void testFailure(Failure failure) {
        super.testFailure(failure);
        if (!failure.getDescription().isSuite()) { // check is needed to avoid double attaching
             attachFailed();
        }
    }

    @Attachment(value = "Message", type = "text/plain")
    public String attachFailed(){
        return "Test failed!";
    }
}

不要忘记更改pom.xml档案

中的听众
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.18.1</version>
            <configuration>
                <testFailureIgnore>false</testFailureIgnore>
                <argLine>
                    -javaagent:${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar
                </argLine>
                <properties>
                    <property>
                        <name>listener</name>
                        <value>com.mycompany.testing.CustomAllureListener</value>
                    </property>
                </properties>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>org.aspectj</groupId>
                    <artifactId>aspectjweaver</artifactId>
                    <version>${aspectj.version}</version>
                </dependency>
            </dependencies>
        </plugin>