此功能需要 Microsoft.Testing.Extensions.Retry NuGet 套件。
小提示
當使用 Microsoft.Testing.Platform.MSBuild (MSTest、NUnit 和 xUnit 執行程式可傳遞包含)時,安裝其 NuGet 套件時,此擴充功能會自動註冊——無需修改程式碼。 以下部分的手動註冊僅在你透過設定 <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>關閉自動產生的入口點時才需要。
手動註冊
var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddRetryProvider();
Retry
一個 .NET 測試韌性與暫態故障處理擴充。
此延伸模組適用於整合測試,其中測試嚴重相依於環境的狀態,而且可能會遇到暫時性錯誤。
備註
此套件附帶 Microsoft.Testing.Platform Tools 的限制性授權。 完整授權可在 https://www.nuget.org/packages/Microsoft.Testing.Extensions.Retry/1.0.0/License取得。
選項
| 選項 | Description |
|---|---|
--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.5m1h、 、 1d。 預設單位是毫秒。 需要 --retry-failed-tests。 從 2.3.0 版本起,已支援 MTP。 |
兩個閾值選項(--retry-failed-tests-max-percentage 和 --retry-failed-tests-max-tests)也都需要 --retry-failed-tests 設定。
從 MTP 2.4.0 開始,重試摘要報告會將恢復的測試名稱分開flakyretried計算並列入不穩定測試。 為避免誤導總數,MTP 不會在第一次嘗試後列印過濾重試的完整套件摘要。 使用終端報告 --show-flaky-tests 者的選項來顯示或隱藏不穩定的細節。
每次重試嘗試都會將報告產物寫入該 Retries 目錄下。 對 JUnit 而言,頂層報告僅代表最終篩選後的重試嘗試,而非原始完整套件;收集先前嘗試報告,從 Retries 你的CI要求全面保障時取得。 此配置適用於 --retry-failed-tests。 MSTest 的 in-process [Retry] 則會將已過的嘗試合併成每次測試的最終 JUnit 或 TRX 結果。
範例
重試測試失敗次數最多三次:
dotnet run --project Contoso.MyTests -- --retry-failed-tests 3
重試最多失敗兩次,但如果超過50% 測試失敗,請停止重試:
dotnet run --project Contoso.MyTests -- --retry-failed-tests 2 --retry-failed-tests-max-percentage 50
重試測試失敗最多三次,但如果超過10次失敗,請停止重試:
dotnet run --project Contoso.MyTests -- --retry-failed-tests 3 --retry-failed-tests-max-tests 10
局限性
- 瀏覽器平台不支援。
- 在 hot reload 模式下不支援。