2
WebアプリケーションのテストにGebとSpockフレームワークを使用し、エクステントレポートと統合しています。すべてのテストケースにアクセスするために、JUnit @Rule
を使用してエクステントレポート機能のための別のクラスを作成しました。今問題は、TC
が失敗したときです。失敗したシナリオのレポートを生成しておらず、成功した場合のレポートを作成しています。 TestWatcher
がSpock TCを使用して例外に失敗したことをキャッチする方法はありますか?または、以下の機能を実行するSpockのTestWatcher
のような類似のクラスがあります。Geb&Spockでエクステントレポートを生成する方法
@Rule
public TestRule watchman = new TestWatcher() {
@Override
public Statement apply(Statement base, Description description) {
return super.apply(base, description)
}
@Override
protected void failed(Throwable e,Description description) {
TestUtils.takeScreenshot("testimg", "png", driver)
println("fail")
ExtentReports extent = createReport()
ExtentTest test = extent.startTest(description.getMethodName(), "Test failed, click here for further details")
// step log
String img = test.addScreenCapture(".testimg.png")
test.log(LogStatus.FAIL, "Failure : "+ e.toString(),img)
flushReports(extent, test)
}
@Override
protected void succeeded(Description description) {
ExtentReports extent = createReport()
ExtentTest test = extent.startTest(description.getMethodName(), "-")
test.log(LogStatus.PASS, "Passed")
flushReports(extent, test)
}
@Override
protected void skipped(AssumptionViolatedException e, Description description) {
ExtentReports extent = createReport();
ExtentTest test = extent.startTest(description.getMethodName(), "-")
// step log
test.log(LogStatus.SKIP, "Skipped")
flushReports(extent, test)
}
@Override
protected void finished(Description description) {
browser.close()
}
}
private ExtentReports createReport() {
ExtentReports extent = new ExtentReports(".testReport.html", false);
return extent
}
private void flushReports(ExtentReports extent, ExtentTest test){
extent.endTest(test)
extent.flush()
}