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.

Vanaf MTP 2.4.0 worden de samenvattingsrapporten voor opnieuw proberen gescheiden flaky en geteld en retried worden herstelde testnamen vermeld onder Flaky-tests. Om misleidende totalen te voorkomen, wordt met MTP geen volledige suite-samenvatting afgedrukt voor gefilterde nieuwe pogingen na de eerste poging. Gebruik de optie van --show-flaky-tests 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 nieuwe poging, niet de oorspronkelijke volledige suite; verzamel de eerdere pogingsrapporten vanaf Retries het moment dat uw CI volledige dekking vereist. Deze indeling is van toepassing op --retry-failed-tests. MsTest's in-process [Retry] in plaats daarvan worden vervangen pogingen samengevouwen 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.