이 문서에는 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.MSBuildMSBuild 속성을 설정하여<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>설정하지 마세요.
.NET