Retry

이 기능을 사용하려면 Microsoft.Testing.Extensions.Retry NuGet 패키지가 필요합니다.

팁 (조언)

Microsoft.Testing.Platform.MSBuild(MSTest, NUnit 및 xUnit 실행기에서 전이적으로 포함)를 사용하는 경우 이 확장은 NuGet 패키지를 설치할 때 자동으로 등록되며 코드 변경이 필요하지 않습니다. 다음 섹션의 수동 등록은 자동 생성된 진입점을 설정 <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>하여 사용하지 않도록 설정한 경우에만 필요합니다.

수동 등록

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

Retry

.NET 테스트 복원력 및 일시적인 오류 처리 확장입니다.

이 확장은 테스트가 환경 상태에 크게 의존하며 일시적인 오류가 발생할 수 있는 통합 테스트를 위한 것입니다.

비고

패키지는 제한적인 Microsoft.Testing.Platform Tools 라이선스와 함께 제공됩니다. 전체 라이선스는 https://www.nuget.org/packages/Microsoft.Testing.Extensions.Retry/1.0.0/License에서 확인할 수 있습니다.

옵션

Option Description
--retry-failed-tests 실패한 테스트는 통과하거나 최대 시도 횟수에 도달할 때까지 다시 실행합니다. 확장을 활성화하는 데 필요합니다.
--retry-failed-tests-max-percentage 실패한 테스트 사례의 백분율이 지정된 임계값을 초과할 때 테스트를 다시 실행하지 않습니다. --retry-failed-tests-max-tests와 결합할 수 없습니다. --retry-failed-tests가 필요합니다.
--retry-failed-tests-max-tests 실패한 테스트 사례 수가 지정된 한도를 초과할 때 테스트를 다시 실행하지 않습니다. --retry-failed-tests-max-percentage와 결합할 수 없습니다. --retry-failed-tests가 필요합니다.
--retry-failed-tests-delay 재시도 사이에 지연을 추가합니다. 지연은 시간 값(예200: , 500ms, 1s, 2.5m1h또는 1d)으로 표현됩니다. 기본 단위는 밀리초입니다. --retry-failed-tests가 필요합니다. 버전 2.3.0부터 MTP에서 사용할 수 있습니다.

임계값 옵션(--retry-failed-tests-max-percentage 및 --retry-failed-tests-max-tests)도 모두 설정해야 합니다 --retry-failed-tests .

프레임워크 작성자에게 이 확장에는 안정적인 테스트 노드 UID와 올바른 요청 필터 처리가 필요합니다. 재시도는 새 테스트 프로세스를 시작하고 --filter-uid를 통해 실패한 테스트를 선택합니다. 프레임워크가 TestNodeUidListFilter를 무시하면 실패한 테스트만 다시 실행하는 대신 선택되지 않은 테스트를 다시 실행할 수 있습니다.

MTP 2.4.0부터 다시 시도 요약은 flaky 및 retried 개수를 각각 보고하고, 복구된 테스트 이름은 Flaky tests 아래에 나열합니다. 오해의 소지가 있는 합계를 방지하기 위해 MTP는 첫 번째 시도 후 필터링된 재시도 시도에 대한 전체 테스트 스위트 요약을 인쇄하지 않습니다. 터미널 리포터의 --show-flaky-tests 옵션을 사용하여 불안정한 세부 정보를 표시하거나 숨깁니다.

다시 시도할 때마다 해당 보고서 아티팩트가 Retries 디렉터리 아래에 기록됩니다. JUnit의 경우 최상위 보고서는 원래 전체 테스트 스위트가 아니라 최종적으로 필터링된 재시도만 나타냅니다. CI에서 완전한 적용 범위가 필요한 경우 Retries에서 이전 시도 보고서를 수집하세요. 이 레이아웃은 --retry-failed-tests에 적용됩니다. 대신 MSTest의 in-process [Retry]는 대체되어 무효화된 시도를 테스트당 하나의 최종 JUnit 또는 TRX 결과로 축소합니다.

예시

최대 3회까지 실패한 테스트를 다시 시도하세요.

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

테스트에 실패할 경우 최대 2회까지 재시도하지만, 테스트의 50% 이상이 실패한 경우 재시도를 중지합니다.

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

최대 3회까지 테스트에 실패했지만 10개 이상의 테스트가 실패한 경우 다시 시도를 중지합니다.

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

제한점

  • 브라우저 플랫폼에서 지원되지 않습니다.
  • hot reload 모드에서는 지원되지 않습니다.