Retry

此功能需要 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 會增加重試之間的延遲。 延遲以時間值表示,例如 200500ms1s2.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 模式下不支援。