この機能には、 Microsoft.Testing.Extensions.Retry NuGet パッケージが必要です。
ヒント
Microsoft.Testing.Platform.MSBuild (MSTest、NUnit、xUnit ランナーによって推移的に含まれる) を使用する場合、この拡張機能は NuGet パッケージをインストールするときに自動的に登録されます。コードの変更は必要ありません。 次のセクションの手動登録は、 <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>設定して自動生成されたエントリ ポイントを無効にした場合にのみ必要です。
手動登録
var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddRetryProvider();
リトライ
.NETテストの回復性と一時的な障害処理拡張機能。
この拡張機能は、テストが環境の状態に大きく依存し、一時的な障害が発生する可能性がある統合テストを対象としています。
注
パッケージには、制限付きの Microsoft.Testing.Platform Tools ライセンスが付属しています。 完全なライセンスは、https://www.nuget.org/packages/Microsoft.Testing.Extensions.Retry/1.0.0/Licenseで入手できます。
オプション
| Option | [説明] |
|---|---|
--retry-failed-tests |
失敗したテストが成功するまで、または試行の最大数に達するまで再実行します。 拡張機能をアクティブ化するために必要です。 |
--retry-failed-tests-max-percentage |
失敗したテスト ケースの割合が指定したしきい値を超えた場合に、テストの再実行を回避します。
--retry-failed-tests-max-testsと組み合わせることはできません。
--retry-failed-tests が必要です。 |
--retry-failed-tests-max-tests |
失敗したテスト ケースの数が指定した制限を超えた場合に、テストの再実行を回避します。
--retry-failed-tests-max-percentageと組み合わせることはできません。
--retry-failed-tests が必要です。 |
--retry-failed-tests-delay |
再試行の間に遅延を追加します。 遅延は、 200、 500ms、 1s、 2.5m、 1h、 1dなどの時間値として表されます。 既定の単位はミリ秒です。
--retry-failed-tests が必要です。 バージョン 2.3.0 以降の MTP で使用できます。 |
しきい値オプション (--retry-failed-tests-max-percentage と --retry-failed-tests-max-tests) の両方で、 --retry-failed-tests も設定する必要があります。
フレームワーク作成者の場合、この拡張機能には、安定したテスト ノード UID と適切な request-filter の処理が必要です。 再試行によって新しいテスト プロセスが起動され、--filter-uidで失敗したテストが選択されます。 フレームワークが TestNodeUidListFilter を無視する場合、失敗したテストだけでなく、選択されていないテストも再実行される可能性があります。
MTP 2.4.0 以降では、再試行の概要では、 flaky と retried のカウントが個別に報告され、回復されたテスト名が Flaky テストの下に一覧表示されます。 誤解を招く合計を回避するために、MTP では、最初の試行後にフィルター処理された再試行については、スイート全体の概要は出力されません。 ターミナル レポーターの --show-flaky-tests オプションを使用して、不安定なテストの詳細を表示または非表示にします。
再試行するたびに、Retries ディレクトリ配下にレポート成果物が書き込まれます。 JUnit の場合、最上位のレポートには、フィルターされた最終的な再試行のみが反映され、元の完全なスイートは含まれません。CI で完全なカバレッジが求められる場合は、Retries から以前の試行のレポートを収集してください。 このレイアウトは、 --retry-failed-testsに適用されます。 一方、MSTest のインプロセス [Retry] では、置き換えられた実行結果が統合され、テストごとに 1 つの最終的な JUnit または TRX の結果となります。
例示
失敗したテストを最大 3 回再試行します。
dotnet run --project Contoso.MyTests -- --retry-failed-tests 3
失敗したテストを最大 2 回再試行しますが、50% を超えるテストが失敗した場合は再試行を停止します。
dotnet run --project Contoso.MyTests -- --retry-failed-tests 2 --retry-failed-tests-max-percentage 50
失敗したテストを最大 3 回再試行しますが、10 を超えるテストが失敗した場合は再試行を停止します。
dotnet run --project Contoso.MyTests -- --retry-failed-tests 3 --retry-failed-tests-max-tests 10
制限事項
- ブラウザー プラットフォームではサポートされていません。
- hot reload モードではサポートされていません。
.NET