Yeniden Dene

Bu özellik , Microsoft.Testing.Extensions.Retry NuGet paketini gerektirir.

İpucu

Microsoft.Testing.Platform.MSBuild kullanırken (MSTest, NUnit ve xUnit çalıştırıcıları tarafından geçişli olarak dahil), NuGet paketini yüklediğinizde bu uzantı otomatik olarak kaydedilir; kod değişikliği gerekmez. Aşağıdaki bölümdeki el ile kayıt, yalnızca ayarıyla <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>otomatik olarak oluşturulan giriş noktasını devre dışı bırakmış olmanız durumunda gereklidir.

El ile kayıt

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

Yeniden Dene

.NET test dayanıklılığı ve geçici hata işleme uzantısı.

Bu uzantı, testin büyük ölçüde ortamın durumuna bağlı olduğu ve geçici hatalarla karşılaşabileceği tümleştirme testlerine yöneliktir.

Uyarı

Paket kısıtlayıcı Microsoft.Testing.Platform Araçları lisansıyla birlikte gönderilir. Tam lisansa https://www.nuget.org/packages/Microsoft.Testing.Extensions.Retry/1.0.0/Licenseadresinden ulaşabilirsiniz.

Options

Seçenek Description
--retry-failed-tests Başarısız testleri geçene kadar veya deneme sayısı üst sınırına ulaşılana kadar yeniden çalıştırır. Uzantıyı etkinleştirmek için gereklidir.
--retry-failed-tests-max-percentage Başarısız test çalışmalarının yüzdesi belirtilen eşiği aştığında testlerin yeniden çalıştırılmasını önler. --retry-failed-tests-max-tests ile birleştirilemez. gerektirir --retry-failed-tests.
--retry-failed-tests-max-tests Başarısız test çalışmalarının sayısı belirtilen sınırı aştığında testlerin yeniden çalıştırılmasını önler. --retry-failed-tests-max-percentage ile birleştirilemez. gerektirir --retry-failed-tests.
--retry-failed-tests-delay Yeniden denemeler arasına gecikme ekler. Gecikme, veya 200gibi 500ms1s2.5m1h1dbir zaman değeri olarak ifade edilir. Varsayılan birim milisaniyedir. gerektirir --retry-failed-tests. 2.3.0 sürümünden itibaren MTP'de kullanılabilir.

Her iki eşik seçeneğinin de (--retry-failed-tests-max-percentage ve --retry-failed-tests-max-tests) ayarlanması gerekir --retry-failed-tests .

Çerçeve yazarları için bu uzantı kararlı test düğümü UID'leri ve doğru istek filtresinin işlenmesini gerektirir. Yeniden deneme yeni bir test işlemi başlatır ve --filter-uid aracılığıyla başarısız testleri seçer. Çerçeveniz TestNodeUidListFilter öğesini yok sayarsa, yalnızca başarısız olan testler yerine seçilmemiş testleri yeniden çalıştırabilir.

MTP 2.4.0'dan başlayarak, yeniden deneme özeti flaky ve retried için ayrı sayıları raporlar ve kurtarılan test adlarını Flaky testleri altında listeler. Yanıltıcı toplamları önlemek için MTP, ilk denemeden sonra filtrelenmiş yeniden deneme girişimleri için tam paket özeti yazdırmaz. Kararsızlık ayrıntılarını göstermek veya gizlemek için terminal muhabirinin --show-flaky-tests seçeneğini kullanın.

Her yeniden deneme girişimi, rapor yapıtlarını Retries dizini altına yazar. JUnit için en üst düzey rapor, özgün tam paketi değil yalnızca son filtrelenmiş yeniden deneme denemesini temsil eder; CI’niz tam kapsam gerektiriyorsa, önceki deneme raporlarını Retries konumundan toplayın. Bu düzen için --retry-failed-testsgeçerlidir. MSTest'in işlem içi [Retry] ise geçersiz kılınan denemeleri test başına tek bir nihai JUnit veya TRX sonucunda toplar.

Örnekler

Başarısız testleri en fazla 3 kez yeniden deneyin:

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

Başarısız testleri en fazla 2 kez yeniden deneyin, ancak 50%'den fazla test başarısız olursa yeniden denemeyi durdurun:

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

Başarısız testleri en fazla 3 kez yeniden deneyin, ancak 10'dan fazla test başarısız olursa yeniden denemeyi durdurun:

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

Sınırlamalar

  • Tarayıcı platformlarında desteklenmez.
  • Hot Reload modunda desteklenmiyor.