自動テスト再試行

テストは何らかの理由で失敗する可能性があり、単純にテストを再実行するだけで再び合格する場合があります (基盤となるインフラストラクチャの問題などによる脆弱性のため)。再試行を自動的に行うように Tradefed を構成できます。

自動再試行の核心は、すべてのテストの再実行を回避することです。失敗したテストのみを再実行するため、実行時間が大幅に節約されます。

Tradefed は、反復機能を介してフレークネスを検出するために、テストを複数回実行することもサポートしています。この場合、すべてのテストが再実行され、いずれかの反復が失敗するとテストは失敗します。

機能を有効にする

自動再試行は、機能を有効にするための 2 つのオプションmax-testcase-run-countretry-strategyを提供するRetryDecision オブジェクトを介して制御されます。

max-testcase-run-countは、試行される再試行または反復の回数を駆動します。永久に再試行しないように上限を設定します。 retry-strategyは、再試行方法の決定を促進します。詳細については、次のセクションを参照してください。

無効にする

次のオプションを使用します。

--retry-strategy NO_RETRY

失敗の再試行

テストの失敗を再試行するには、次のオプションを使用します。

--retry-strategy RETRY_ANY_FAILURE --max-testcase-run-count X

これは、失敗が成功するまで、または再試行の最大回数に達するまで、失敗を再試行します。

反復

何度もテストを再実行するには、次のオプションを使用できます。

--retry-strategy ITERATIONS --max-testcase-run-count X

結果はどのように見えますか?

デフォルトでは、結果レポーターはすべての試行の集計結果を受け取ります。

例: FailRETRY_ANY_FAILUREPassは、再試行によって失敗が解消されたため、集計されたPassになります。

報告者は集計されていない結果を受け取ることができます。そのためには、詳細な (非集計) 結果のサポートを宣言するISupportGranularResults インターフェイスを拡張する必要があります。

実装の詳細

自動再試行を有効にしてテスト ケース レベルで失敗を再実行するには、 ITestFilterReceiverを実装します。

ITestFilterReceiver を実装できない場合は、 IAutoRetriableTestを実装して、再実行の動作を手動で制御できます。 InstalledInstrumentationsTestは、そのインターフェイスの実装例です。