テストが失敗したときにスクリーンショットを取得したい場合、ベスト プラクティスは何ですか? 私はこれを次の方法でやろうとします:
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>
そして私の質問は次のとおりです。この方法が最善の方法ですか、それとももっと簡単にする必要がありますか。