Erneut versuchen

Dieses Feature erfordert das Microsoft.Testing.Extensions.Retry NuGet-Paket.

Tipp

Bei Verwendung von Microsoft.Testing.Platform.MSBuild (transitiv von MSTest, NUnit und xUnit runners eingeschlossen) wird diese Erweiterung automatisch registriert, wenn Sie das NuGet-Paket installieren – keine Codeänderungen erforderlich. Die manuelle Registrierung im folgenden Abschnitt ist nur erforderlich, wenn Sie den automatisch generierten Einstiegspunkt durch Festlegen <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>deaktiviert haben.

Manuelle Registrierung

var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddRetryProvider();

Erneut versuchen

Eine .NET-Erweiterung für Resilienz-Tests und die Behandlung vorübergehender Fehler.

Diese Erweiterung ist für Integrationstests vorgesehen, bei denen der Test stark vom Zustand der Umgebung abhängt und vorübergehende Fehler auftreten kann.

Hinweis

Das Paket wird mit der restriktiven Microsoft.Testing.Platform Tools-Lizenz ausgeliefert. Die vollständige Lizenz ist unter https://www.nuget.org/packages/Microsoft.Testing.Extensions.Retry/1.0.0/Licenseverfügbar.

Options

Option Description
--retry-failed-tests Führen Sie alle fehlgeschlagenen Tests erneut aus, bis sie bestehen oder bis die maximale Anzahl von Versuchen erreicht ist. Erforderlich, um die Erweiterung zu aktivieren.
--retry-failed-tests-max-percentage Verhindert das erneute Ausführen von Tests, wenn der Prozentsatz der fehlgeschlagenen Testfälle den angegebenen Schwellenwert überschreitet. Kann nicht mit --retry-failed-tests-max-tests kombiniert werden. Erfordert --retry-failed-tests.
--retry-failed-tests-max-tests Verhindert das erneute Ausführen von Tests, wenn die Anzahl der fehlgeschlagenen Testfälle den angegebenen Grenzwert überschreitet. Kann nicht mit --retry-failed-tests-max-percentage kombiniert werden. Erfordert --retry-failed-tests.
--retry-failed-tests-delay Fügt eine Verzögerung zwischen Wiederholungen hinzu. Die Verzögerung wird als Zeitwert angegeben, zum Beispiel 200, 500ms, 1s, 2.5m, 1h oder 1d. Die Standardeinheit ist Millisekunden. Erfordert --retry-failed-tests. Verfügbar in MTP ab Version 2.3.0.

Beide Schwellenwertoptionen (--retry-failed-tests-max-percentage und --retry-failed-tests-max-tests) erfordern, dass auch --retry-failed-tests festgelegt wird.

Ab MTP 2.4.0 trennen sich die Zusammenfassungsberichte und flaky zählt und retried listet wiederhergestellte Testnamen unter Flaky-Tests auf. Um irreführende Summen zu vermeiden, druckt MTP keine Vollständige Suite-Zusammenfassung für gefilterte Wiederholungsversuche nach dem ersten Versuch. Verwenden Sie die Option des Terminal-Reporters --show-flaky-tests , um flackerige Details anzuzeigen oder auszublenden.

Jeder Wiederholungsversuch schreibt seine Berichtsartefakte unter das Retries Verzeichnis. Für JUnit stellt der Bericht der obersten Ebene nur den endgültigen gefilterten Wiederholungsversuch dar, nicht die ursprüngliche vollständige Suite; Erfassen Sie die Berichte über den früheren Versuch, wenn Retries Ihr CI eine vollständige Abdeckung erfordert. Dieses Layout gilt für --retry-failed-tests. MsTests In-Process [Retry] reduziert stattdessen abgelöste Versuche in ein endgültiges JUnit- oder TRX-Ergebnis pro Test.

Beispiele

Wiederholung fehlgeschlagener Tests bis zu 3 Mal:

dotnet run --project Contoso.MyTests -- --retry-failed-tests 3

Tests mit Fehlern bis zu 2 Mal erneut ausführen, aber die erneute Ausführung beenden, wenn mehr als 50 % der Tests fehlgeschlagen sind.

dotnet run --project Contoso.MyTests -- --retry-failed-tests 2 --retry-failed-tests-max-percentage 50

Wiederholen Sie fehlgeschlagene Tests bis zu dreimal, aber beenden Sie die Wiederholungsversuche, wenn mehr als 10 Tests fehlschlagen.

dotnet run --project Contoso.MyTests -- --retry-failed-tests 3 --retry-failed-tests-max-tests 10

Einschränkungen

  • Wird auf Browserplattformen nicht unterstützt.
  • Wird im Hot-Reload-Modus nicht unterstützt.