MTP는 구성 파일 및 환경 변수를 사용하여 테스트 플랫폼의 동작을 구성하도록 지원합니다. 이 문서에서는 테스트 플랫폼을 구성하는 데 사용할 수 있는 구성 설정에 대해 설명합니다.
testconfig.json
테스트 플랫폼은 [appname].testconfig.json 구성 파일을 사용하여 테스트 플랫폼의 동작을 구성합니다. testconfig.json 파일은 테스트 플랫폼에 대한 구성 설정을 포함하는 JSON 파일입니다.
testconfig.json 파일의 구조는 다음과 같습니다.
{
"platformOptions": {
"resultDirectory": "./TestResults"
}
}
플랫폼은 테스트 프로젝트의 출력 디렉터리(실행 파일 가까이)에 있는 [appname].testconfig.json 파일을 자동으로 검색하고 로드합니다.
Microsoft.Testing.Platform.MSBuild 를 사용할 때, testconfig.json 파일을 생성하면 자동으로 [appname].testconfig.json으로 이름이 바뀌고 테스트 프로젝트의 출력 디렉터리로 이동됩니다.
MTP 1.5부터 명령줄 인수 --config-file 를 사용하여 testconfig.json경로를 지정할 수 있습니다. 이 파일은 [appname].testconfig.json 파일보다 우선합니다.
메모
[appname].testconfig.json 파일은 후속 빌드에서 덮어씁니다.
중앙 집중식 testconfig.json 사용
여러 테스트 프로젝트에서 단일 testconfig.json 공유하려는 경우 중앙 위치에 배치하고 이를 통해 --config-file전달할 수 있습니다. MSBuild를 사용할 수 있는 경우(예: dotnet test ) dotnet runMSBuild 속성을 사용하여 TestingPlatformCommandLineArguments 인수를 자동으로 전달할 수 있습니다. 리포지토리 루트의 Directory.Build.props 에 추가하면 모든 테스트 프로젝트가 동일한 구성을 사용할 수 있습니다.
<PropertyGroup>
<TestingPlatformCommandLineArguments>
$(TestingPlatformCommandLineArguments) --config-file $(MSBuildThisFileDirectory)testconfig.json
</TestingPlatformCommandLineArguments>
</PropertyGroup>
구성 우선순위
동일한 설정을 여러 가지 방법으로 지정할 수 있는 경우 MTP는 다음 순서로 확인합니다(첫 번째 일치가 우선).
- 명령줄 인수(예:
--results-directory) - 환경 변수
- testconfig.json 설정
- 내장 기본값
플랫폼 옵션
platformOptions 파일의 섹션은 테스트 플랫폼의 핵심 동작을 구성합니다. 다음 표에서는 지원되는 모든 플랫폼 옵션을 나열합니다.
| 항목 | 기본값 | Description |
|---|---|---|
resultDirectory |
TestResults |
테스트 결과가 배치되는 디렉터리입니다. 상대 경로(현재 작업 디렉터리에서 확인됨) 또는 절대 경로일 수 있습니다.
--results-directory 명령줄 옵션이 우선합니다. |
exitProcessOnUnhandledException |
false |
true로 설정하면 테스트 호스트 프로세스는 정상 종료를 허용하지 않고, 처리되지 않은 예외가 발생하면 즉시 종료됩니다.
TESTINGPLATFORM_EXIT_PROCESS_ON_UNHANDLED_EXCEPTION 환경 변수(값 1 또는0)가 우선합니다. |
메모
고급 시나리오(예: 테스트 호스트 컨트롤러의 명명된 파이프 시간 제한)에 대한 추가 내부 플랫폼 옵션이 있습니다. 이러한 옵션은 인프라 사용을 위한 것이며 여기서는 다루지 않습니다.
Example:
{
"platformOptions": {
"resultDirectory": "../../TestResults",
"exitProcessOnUnhandledException": false
}
}
확장 옵션은 CLI 전용입니다.
크래시 덤프, 중단 덤프, 재시도, TRX 보고서 및 코드 검사와 같은 확장 기능은 testconfig.json통해 구성할 수 없습니다. 이러한 기능은 명령줄 인수를 통해서만 구성됩니다.
명령줄 옵션에 대한 전체 참조는 MTP CLI 옵션 참조를 참조하세요.
프레임워크별 설정 테스트
테스트 프레임워크는 testconfig.json 파일에서 자체 구성 섹션을 정의할 수 있습니다. 테스트 프레임워크에 대한 설명서를 참조하세요.
- MSTest: MSTest 구성 - testconfig.json
- xUnit.net v3: xUnit.net testconfig.json
- NUnit: Microsoft.Testing.Platform의 최신 지원에 대해서는 NUnit 설명서를 참조하세요.
- TUnit: 최신 Microsoft.Testing.Platform 지원에 대해서는 TUnit 설명서를 참조하세요.
예제 testconfig.json
다음 예제에서는 플랫폼 옵션 및 MSTest 설정을 구성하는 testconfig.json 파일을 보여 줍니다.
{
"platformOptions": {
"resultDirectory": "./TestResults"
},
"mstest": {
"parallelism": {
"enabled": true,
"workers": 4,
"scope": "method"
},
"timeout": {
"test": 30000
},
"execution": {
"considerFixturesAsSpecialTests": true
}
}
}
.runsettings에서 testconfig.json으로 마이그레이션
.runsettings 파일에서 마이그레이션하는 경우 다음 표에서는 공통 설정을 해당testconfig.json 해당 항목 또는 대안에 매핑합니다.
| .runsettings 설정 | testconfig.json에 상응하는 | Notes |
|---|---|---|
RunConfiguration/ResultsDirectory |
platformOptions.resultDirectory |
|
RunConfiguration/MaxCpuCount |
동등한 항목 없음 | 프로세스 수준 병렬 처리는 dotnet test --max-parallel-test-modules 또는 MSBuild /m 옵션으로 제어됩니다. |
MSTest/* |
mstest.* |
MSTest 구성을 참조하세요. testconfig.json. |
xUnit/* |
xUnit.* |
xUnit.net testconfig.json참조하세요. |
LoggerRunSettings/Loggers |
CLI만 |
--report-trx 또는 유사한 CLI 옵션을 사용하세요. |
DataCollectionRunSettings (비난) |
CLI 전용 |
--crashdump 및 --hangdump CLI 옵션을 사용하세요.
충돌 및 응답 없음 덤프를 참조하십시오. |
DataCollectionRunSettings (적용 범위) |
CLI 전용 | CLI 옵션을 사용합니다 --coverage .
코드 커버리지를 참조하세요. |
TestRunParameters |
--test-parameter 커맨드 라인 인터페이스 (CLI) |
명령줄에서 --test-parameter key=value를 사용합니다. |
환경 변수
환경 변수를 사용하여 일부 런타임 구성 정보를 제공할 수 있습니다.
메모
환경 변수는 testconfig.json 파일의 구성 설정보다 우선합니다.
TESTINGPLATFORM_EXIT_PROCESS_ON_UNHANDLED_EXCEPTION 환경 변수
로 1설정하면 테스트 호스트 프로세스가 처리되지 않은 예외에서 즉시 종료됩니다. 로 0설정하면 플랫폼이 정상적인 종료를 허용합니다. 이 설정은 platformOptions:exitProcessOnUnhandledException 구성보다 우선합니다.
TESTINGPLATFORM_DEFAULT_HANG_TIMEOUT 환경 변수
테스트 호스트 컨트롤러와 테스트 호스트 간의 명명된 파이프 연결에 사용되는 기본 시간 제한(300초)을 재정의합니다. 값은 호환되는 TimeSpan문자열이어야 합니다.
TESTINGPLATFORM_UI_LANGUAGE 환경 변수
MTP 1.5부터 이 환경 변수는 다음과 같은 en-us로캘 값을 사용하여 메시지 및 로그를 표시하기 위한 플랫폼의 언어를 설정합니다. 이 언어는 Visual Studio 및 .NET SDK 언어보다 우선합니다. 지원되는 값은 Visual Studio와 동일합니다. 자세한 내용은 Visual Studio 설치 설명서설치 관리자 언어 변경에 대한 섹션을 참조하세요.
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 환경 변수
기본 제공 파일 로거가 로그를 동기적으로 작성하도록 합니다. 로그 항목을 손실하지 않으려는 시나리오에 유용합니다(프로세스가 충돌하는 경우). 이렇게 하면 테스트 실행 속도가 느려집니다.
TESTINGPLATFORM_EXITCODE_IGNORE 환경 변수
무시할 종료 코드의 세미콜론으로 구분된 목록입니다. 종료 코드가 무시되면 프로세스가 대신 반환됩니다 0 . 예를 들어 TESTINGPLATFORM_EXITCODE_IGNORE=2;8 테스트 실패 및 테스트 실행되지 않은 시나리오는 무시합니다.
메모
진단 관련 환경 변수는 해당 --diagnostic-* 명령줄 인수보다 우선합니다.
참고하십시오
.NET