2

テストが失敗したときにスクリーンショットを取得したい場合、ベスト プラクティスは何ですか? 私はこれを次の方法でやろうとします:

1)AllureRunListener をオーバーライドする:

public class SimpleScreenshotTestListener extends AllureRunListener{

@Override
public void testFailure(Failure failure) {
    if (failure.getDescription().isTest()) {
        fireTestCaseFailure(failure.getException());
    } else {
        startFakeTestCase(failure.getDescription());
        fireTestCaseFailure(failure.getException());
        finishFakeTestCase();
    }
    makeScreenshot("Failure screenshot");
}   

}

メソッドmakeScreenshot("Failure screenshot")は、Util クラスの静的メソッドです。

public final class Util {

 private Util() {}

 @Attachment(value = "{0}", type = "image/png")
 public static byte[] makeScreenshot(String name) {
        return ((TakesScreenshot) <Thread Local Driver>).getScreenshotAs(OutputType.BYTES);
 }
}

3) 私の pom ファイルでは、作成したリスナー SimpleScreenshotTestListenerを使用します。

<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>cms.fireFox.Tps.SimpleScreenshotTestListener</value>
                </property>
            </properties>
        </configuration>
        <dependencies>
            <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjweaver</artifactId>
                <version>${aspectj.version}</version>
            </dependency>
        </dependencies>
    </plugin>

そして私の質問は次のとおりです。この方法が最善の方法ですか、それとももっと簡単にする必要がありますか。

4

1 に答える 1