다음을 통해 공유


Microsoft.Testing.Platform 문제 해결

이 문서에는 Microsoft.Testing.Platform에 대한 문제 해결 지침이 포함되어 있습니다.

종료 코드

Microsoft.Testing.Platform 는 알려진 종료 코드를 사용하여 테스트 실패 또는 앱 오류를 전달합니다. 종료 코드는 0부터 시작하며 음수가 아닙니다.

종료 코드 세부 정보
0 종료 코드는 0 성공을 나타냅니다. 실행하도록 선택된 모든 테스트가 완료될 때 실행되었으며 오류가 없었습니다.
1 종료 코드는 1 알 수 없는 오류를 나타내며, 포괄적 역할을 합니다. 추가 오류 정보 및 세부 정보를 찾으려면 출력을 확인합니다.
2 종료 코드 2 는 하나 이상의 테스트 실패가 있음을 나타내는 데 사용됩니다.
3 종료 코드 3 는 테스트 세션이 중단되었음을 나타냅니다. 예를 들어 Ctrl+C를 사용하여 세션을 중단할 수 있습니다.
4 종료 코드 4 는 사용된 확장의 설정이 잘못되었으며 테스트 세션을 실행할 수 없음을 나타냅니다.
5 종료 코드 5 는 테스트 앱에 전달된 명령줄 인수가 잘못되었음을 나타냅니다.
6 (더 이상 사용되지 않음) 종료 코드 6 는 더 이상 플랫폼에서 생성되지 않습니다. 이전에는 테스트 세션이 구현되지 않은 기능을 사용하고 있음을 표시했습니다.
7 종료 코드 7 는 테스트 세션이 성공적으로 완료되지 않았고 충돌했을 가능성이 있음을 나타냅니다. 이는 테스트 컨트롤러의 확장 지점을 통해 실행된 테스트 세션에 의해 발생했을 수 있습니다.
8 종료 코드 8 는 테스트 세션이 0개의 테스트를 실행했음을 나타냅니다.
9 종료 코드 9 는 실행된 테스트에 대한 최소 실행 정책을 위반했음을 나타냅니다.
10 종료 코드 10 는 테스트 어댑터인 Testing.Platform Test Framework, MSTest, NUnit 또는 xUnit이 테스트 자체와 관련이 없는 인프라 이유로 테스트를 실행하지 못했음을 나타냅니다. 테스트에 필요한 설비를 만들지 못하는 예제가 있습니다.
11 종료 코드 11 는 종속 프로세스가 종료될 경우 테스트 프로세스가 종료된다는 것을 나타냅니다.
12 종료 코드 12 는 클라이언트가 지원되는 프로토콜 버전을 지원하지 않으므로 테스트 세션을 실행할 수 없음을 나타냅니다.
13 종료 코드 13 는 명령줄 옵션을 사용하여 --maximum-failed-tests 지정된 최대 실패 테스트 수에 도달하여 테스트 세션이 중지되었음을 나타냅니다. 자세한 내용은 Microsoft.Testing.Platform CLI 옵션 참조의 옵션 섹션을 참조하세요.

자세한 로깅을 사용하도록 설정하고 문제를 해결하려면 진단 로깅을 참조하세요.

특정 종료 코드 무시

Microsoft.Testing.Platform 는 기본적으로 엄격하도록 설계되었지만 구성 가능성을 허용합니다. 따라서 사용자가 무시해야 하는 종료 코드를 결정할 수 있습니다(원래 종료 코드 대신 종료 코드 0 가 반환됨).

특정 종료 코드를 무시하려면 명령줄 옵션 또는 환경 변수를 --ignore-exit-code 사용합니다TESTINGPLATFORM_EXITCODE_IGNORE. 허용되는 유효한 형식은 무시할 종료 코드의 세미콜론으로 구분된 목록입니다(예: --ignore-exit-code 2;3;8). 일반적인 시나리오로는 테스트 실패가 종료 코드에 영향을 미치지 않아야 하며(종료 코드 2 무시에 해당) 종료 코드가 0이 아닌 경우가 되지 않도록 하는 것이 있습니다.

진단 로깅

이 플랫폼은 테스트 실행 문제를 해결하는 데 도움이 되는 기본 제공 진단 로깅을 제공합니다. 명령줄 옵션 또는 환경 변수를 통해 진단 로깅을 사용하도록 설정할 수 있습니다.

명령줄 옵션

다음 플랫폼 옵션은 테스트 앱 문제 해결에 유용한 정보를 제공할 있습니다.

  • --info
  • --diagnostic
  • --diagnostic-synchronous-write
  • --diagnostic-verbosity
  • --diagnostic-file-prefix
  • --diagnostic-output-directory

환경 변수

환경 변수를 사용하여 진단 로그를 사용하도록 설정할 수도 있습니다.

환경 변수 이름 Description
TESTINGPLATFORM_DIAGNOSTIC 1설정하면 진단 로깅을 사용하도록 설정합니다.
TESTINGPLATFORM_DIAGNOSTIC_VERBOSITY 세부 정보 표시 수준을 정의합니다. 사용 가능한 값은 Trace, Debug, Information, Warning, Error또는 Critical.
TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_DIRECTORY 진단 로깅의 출력 디렉터리(지정되지 않은 경우)는 기본 TestResults 디렉터리에 생성됩니다.
TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_FILEPREFIX 로그 파일 이름의 접두사입니다. 기본값은 "log_"입니다.
TESTINGPLATFORM_DIAGNOSTIC_FILELOGGER_SYNCHRONOUSWRITE 기본 제공 파일 로거가 로그를 동기적으로 작성하도록 합니다. 로그 항목을 손실하지 않으려는 시나리오에 유용합니다(프로세스가 충돌하는 경우). 이렇게 하면 테스트 실행 속도가 느려집니다.

비고

환경 변수는 명령줄 인수보다 우선합니다.

구성 오류 해결

Microsoft.Testing.Platform.MSBuild

다음은 Microsoft.Testing.Platform.MSBuild와 관련된 일반적인 구성 오류입니다.

오류 CS8892: 동기 진입점 'Program.Main(string[])'이(가) 발견되었으므로 메서드 'TestingPlatformEntryPoint.Main(string[])'이 진입점으로 사용되지 않습니다.

테스트 프로젝트에서 진입점(Main)을 수동으로 정의하거나 이미 진입점이 있는 애플리케이션에서 테스트 프로젝트를 참조하면 Microsoft.Testing.Platform생성된 진입점과 충돌합니다. 이 문제를 방지하려면 다음 단계 중 하나를 수행합니다.

  • 수동으로 정의된 진입점(일반적으로 Main 메서드)을 제거하고 테스트 플랫폼이 자동으로 생성하도록 합니다.

  • <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint> MSBuild 속성을 설정하여 진입점 생성을 사용하지 않도록 설정합니다.

  • 테스트 프로젝트를 참조하는 프로젝트에서 Microsoft.Testing.Platform.MSBuild MSBuild 속성을 설정하여 <IsTestingPlatformApplication>false</IsTestingPlatformApplication> 대한 전이적 종속성을 완전히 사용하지 않도록 설정합니다. 테스트가 아닌 프로젝트에서 테스트 프로젝트를 참조하는 경우(예: 테스트 애플리케이션을 참조하는 콘솔 앱) 이 작업이 필요합니다.

Microsoft.Testing.Extensions.Fakes

fakes 오류 COR_PROFILER_PATH 및 COR_PROFILER 환경 변수에서 프로파일러 경로를 해결하지 못했습니다.

이 오류는 모든 Fakes 어셈블리가 bin 폴더에 없는 경우에 발생할 수 있습니다.

  • 프로젝트에서 MSTest.SDK를 사용하거나 Microsoft.Testing.Extensions.Fakes를 참조해야 합니다.
  • .NET Framework 프로젝트의 경우 nuGet에서 모든 파일을 bin 폴더에 복사하지 않으므로 <PlatformTarget>AnyCPU</PlatformTarget> 설정하지 마세요.