Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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.
Für Frameworkautoren erfordert diese Erweiterung stabile Testknoten-UIDs und die korrekte Handhabung von Request-Filtern. Ein Wiederholungsversuch startet einen neuen Testprozess und wählt die fehlgeschlagenen Tests über --filter-uid aus. Wenn Ihr Framework TestNodeUidListFilter ignoriert, kann es passieren, dass nicht ausgewählte Tests anstelle von nur den fehlgeschlagenen Tests erneut ausgeführt werden.
Ab MTP 2.4.0 meldet die Wiederholungszusammenfassung separate flaky- und retried-Zählungen und listet wiederhergestellte Testnamen unter Flaky-Tests auf. Um irreführende Gesamtwerte zu vermeiden, gibt MTP nach dem ersten Versuch keine Zusammenfassung der vollständigen Suite für gefilterte Wiederholungsversuche aus. Verwenden Sie die Option --show-flaky-tests des Terminalreporters, um Details zu unzuverlässigen Tests ein- oder auszublenden.
Jeder Wiederholungsversuch schreibt seine Berichtsartefakte unter das Retries Verzeichnis. Für JUnit stellt der Bericht auf oberster Ebene nur den letzten gefilterten Wiederholungsversuch dar, nicht die ursprüngliche vollständige Suite. Sammeln Sie die Berichte früherer Versuche aus Retries, wenn Ihre CI eine vollständige Abdeckung erfordert. Dieses Layout gilt für --retry-failed-tests. MsTests In-Process [Retry] fasst stattdessen abgelöste Versuche zu einem endgültigen JUnit- oder TRX-Ergebnis pro Test zusammen.
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.