2017-03-01 9 views
0

私が使用してテストの失敗に対してアクションを実行することができます。キュウリのテストがJavaで失敗したときにスローされた例外を取得するには?

@After 
public void afterTest(Scenario scenario) { 
    if (scenario.isFailed()) { 
     /*Do stuff*/ 
    } 
} 

をしかし、私は実行する必要のあるアクションの一部がスローされましたし、どのような文脈で、それがスローされた例外に依存します。テストを失敗させたThrowableを取得する方法はありますか? JUnitの中にたとえば、私はTestWatcherを拡張することでこれを行うだろうと私のテストにルールを追加します。

@Override 
protected void failed(Throwable e, Description description) { 
    /*Do stuff with e*/ 
} 

キュウリ、JUnitのiplementationは、ルールの使用を許可していませんので、この解決策は、キュウリでは動作しないでしょうが。

私のテスト環境は常に安定したので、私のテストが失敗することがありますされていません。

私は、しかし、私はまだ例を提供します、私はテスト失敗した場合にスローされた例外にアクセスすることは有用であろう理由を説明する必要はないと思います予期せずいつでも(例外がいつでも発生する可能性があるため、例外をキャッチしようとする特定の場所はありません)。このような状況が発生した場合は、別の試行のために再スケジュールするためのテストが必要で、環境の不安定性に関する何らかの統計データを得ることができるようにインシデントをログに記録してください(いつ、どのくらい頻繁に、どのくらい長くかかります)。

答えて

0

Formatter & Reporterインターフェイスの独自のカスタム実装を作成します。 Formatterの空の実装は、拡張できるNullFormatter.javaです。 Reporterインターフェイスの実装を提供する必要があります。

興味深い方法は、Reporterインターフェースのresult()、おそらくはFormatterのdone()メソッドです。 result()には例外があるResultオブジェクトがあります。

あなたは明確にするためRerunFormatter.javaを見ることができます。

Github Formatter source

public void result(Result result) { 
     //Code to create logs or store to a database etc... 
     result.getError(); 
     result.getErrorMessage(); 
} 

あなたはプラグインオプションに、このクラス(com.myimpl.CustomFormRep)を追加する必要があります。

plugin={"pretty", "html:report", "json:reports.json","rerun:target/rerun.txt",com.myimpl.CustomFormRep} 

More details on custom formatters.

もう一度実行するために失敗したシナリオのリストを取得するために再実行プラグインを使用することができます。失敗したテストの実行をスケジュールする、コードをバッチジョブを作成する、またはCIツールでスケジュールすることについては不明です。

関連する問題