Opnieuw proberen

Voor deze functie is het NuGet-pakket Microsoft.Testing.Extensions.Retry vereist.

Aanbeveling

Wanneer u Microsoft.Testing.Platform.MSBuild gebruikt (inclusief transitief door MSTest, NUnit en xUnit runners), wordt deze extensie automatisch geregistreerd wanneer u het NuGet-pakket installeert. Er zijn geen codewijzigingen nodig. De handmatige registratie in de volgende sectie is alleen vereist als u het automatisch gegenereerde toegangspunt hebt uitgeschakeld door de instelling in te stellen <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>.

Handmatige registratie

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

Opnieuw proberen

Een .NET-extensie voor testweerbaarheid en afhandeling van voorbijgaande fouten.

Deze extensie is bedoeld voor integratietests waarbij de test sterk afhankelijk is van de status van de omgeving en tijdelijke fouten kan ondervinden.

Opmerking

Het pakket wordt geleverd met de beperkende licentie Microsoft.Testing.Platform Tools. De volledige licentie is beschikbaar op https://www.nuget.org/packages/Microsoft.Testing.Extensions.Retry/1.0.0/License.

Opties

Optie Description
--retry-failed-tests Voert mislukte tests opnieuw uit totdat ze zijn geslaagd of totdat het maximum aantal pogingen is bereikt. Vereist om de extensie te activeren.
--retry-failed-tests-max-percentage Vermijd opnieuw uitvoeren van tests wanneer het percentage mislukte testcases de opgegeven drempelwaarde overschrijdt. Kan niet worden gecombineerd met --retry-failed-tests-max-tests. Vereist --retry-failed-tests.
--retry-failed-tests-max-tests Vermijd het opnieuw uitvoeren van tests wanneer het aantal mislukte testcases de opgegeven limiet overschrijdt. Kan niet worden gecombineerd met --retry-failed-tests-max-percentage. Vereist --retry-failed-tests.
--retry-failed-tests-delay Hiermee wordt een vertraging tussen nieuwe pogingen toegevoegd. De vertraging wordt uitgedrukt als een tijdwaarde, bijvoorbeeld 200, 500ms1s, 2.5m, , 1hof 1d. De standaardeenheid is milliseconden. Vereist --retry-failed-tests. Beschikbaar in MTP vanaf versie 2.3.0.

Voor beide drempelwaarden (--retry-failed-tests-max-percentage en --retry-failed-tests-max-tests) moet --retry-failed-tests ook worden ingesteld.

Voor frameworkauteurs vereist deze extensie stabiele UID's van testknooppunten en de juiste afhandeling van request-filters. Met een nieuwe poging wordt een nieuw testproces gestart en worden de mislukte tests via --filter-uid geselecteerd. Als uw framework TestNodeUidListFilter negeert, kunnen niet-geselecteerde tests opnieuw worden uitgevoerd in plaats van alleen de mislukte tests.

Vanaf MTP 2.4.0 rapporteert de samenvatting van nieuwe pogingen afzonderlijke aantallen voor flaky en retried, en worden herstelde testnamen vermeld onder Flaky-tests. Om misleidende totalen te voorkomen, wordt met MTP geen volledige suite-samenvatting afgedrukt voor gefilterde herhalingspogingen na de eerste poging. Gebruik de --show-flaky-tests-optie van de terminalrapporteur om flaky details weer te geven of te verbergen.

Elke nieuwe poging schrijft de rapportartefacten onder de Retries map. Voor JUnit vertegenwoordigt het rapport op het hoogste niveau alleen de laatste gefilterde herhalingspoging, niet de oorspronkelijke volledige suite; verzamel de eerdere pogingsrapporten van Retries wanneer uw CI volledige dekking vereist. Deze indeling is van toepassing op --retry-failed-tests. MSTest's in-process [Retry] vouwt daarentegen vervangen pogingen samen tot één laatste JUnit- of TRX-resultaat per test.

Voorbeelden

Mislukte tests opnieuw proberen maximaal drie keer.

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

Mislukte tests tot 2 keer opnieuw proberen, maar stoppen met proberen als meer dan 50% van de tests is mislukt.

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

Test maximaal 3 keer opnieuw, maar stop met opnieuw proberen als er meer dan 10 tests zijn mislukt:

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

Beperkingen

  • Niet ondersteund op browserplatforms.
  • Niet ondersteund in hot reload-modus.