AfterScenario
失敗した場合に現在のテストを再実行するフックを実装する方法はありますか?
このようなもの:
[AfterScenario("retry")]
public void Retry()
{
if (ScenarioContext.Current.TestError != null)
{
// ?
}
}
注: 私のプロジェクトのテストは順序付けられたテストに結合され、MsTestを介して実行されます。
Specflow シナリオの目的は、システムが期待どおりに動作していることを確認することです。
一時的な問題が原因でテストが失敗した場合、テストを再実行して「最善を期待」しても問題は解決しません。テストが時々失敗することは、予期される動作ではありません。テストは、実行されるたびに一貫した結果を与える必要があります。
優れたテストを作成するための優れた投稿がここにあり、その回答には、テストは次のようにすべきであると述べられています。
反復可能: テストは毎回同じ結果を生成する必要があります..毎回。テストは、制御不能なパラメーターに依存するべきではありません。
この場合、テストが失敗するのは当然です。ここで、テストが時々失敗する理由を正確に調査する必要があります。
ほとんどの場合、ページの読み込み中に要素が存在しないなど、タイミングの問題が原因でテストが失敗します。このシナリオでは、一貫したテスト環境 (つまり、同じテスト データベース、同じテスト ブラウザー、同じネットワーク セットアップ) があれば、繰り返し可能なテストを書くことができます。WebDriverWait を使用して所定の時間待機し、予想される DOM 要素の存在をテストするこの回答を見てください。