2016-09-16 9 views
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() 
} 

答えて

0

Spockには、JUnitルールの基本的なサポートがいくつかあります。

特定のケースで動作しない場合は、テストライフサイクルにつながるSpock拡張機能を記述する必要があります。

も参照してください。Execute some action when Spock test fails

関連する問題