VSTest.Console.exe 테스트를 실행하는 명령줄 도구입니다. 명령줄에서 순서에 따라 여러 옵션을 지정할 수 있습니다. 이러한 옵션은 일반 명령줄 옵션나열됩니다.
메모
Visual Studio의 MSTest 어댑터는 호환성을 위해 레거시 모드(mstest.exe테스트 실행과 동일)에서도 작동합니다. 레거시 모드에서는 TestCaseFilter 기능을 활용할 수 없습니다. 어댑터는 testsettings 파일을 지정하거나, forcelegacymoderunsettings 파일에서 true 설정하거나, HostType같은 특성을 사용하여 레거시 모드로 전환할 수 있습니다.
ARM 아키텍처 기반 컴퓨터에서 자동화된 테스트를 실행하려면 VSTest.Console.exe사용해야 합니다.
개발자 명령 프롬프트 열어 명령줄 도구를 사용하거나 \ Microsoft Visual Studio\<버전>\<버전>\common7\ide\CommonExtensions\<Platform %Program Files(x86)%도구를 찾을 수 있습니다. Microsoft>.
일반 명령줄 옵션
다음 표에는 VSTest.Console.exe 자주 사용되는 옵션과 간단한 설명이 나와 있습니다. 명령줄에 VSTest.Console/? 입력하여 비슷한 요약을 볼 수 있습니다. 여기에 나열되지 않은 내부 및 레거시 스위치를 비롯한 전체 참조는 vstest.console.exe 명령줄 옵션 및 특히 vstest 리포지토리에서 생략된 스위치 를 참조하세요.
| 선택 | 묘사 |
|---|---|
| [테스트 파일 이름] | 지정된 파일에서 테스트를 실행합니다. 여러 테스트 파일 이름을 공백으로 구분합니다. 예: mytestproject.dll, mytestproject.dll myothertestproject.exe |
| /Settings:[파일 이름] | 데이터 수집기 등의 추가 설정을 사용하여 테스트를 실행합니다. 자세한 내용은 .runsettings 파일 사용하여 단위 테스트 구성 참조하세요. 예: /Settings:local.runsettings |
| /Tests:[테스트 이름] | 제공된 값을 포함하는 이름으로 테스트를 실행합니다. 이 명령은 네임스페이스를 포함하여 전체 테스트 이름과 일치합니다. 여러 값을 제공하려면 쉼표로 구분합니다. 예: /Tests:TestMethod1,testMethod2/TestCaseFilter 명령줄 옵션에는 /Tests 명령줄 옵션을 사용할 수 없습니다. |
| /Parallel | 테스트를 병렬로 실행되도록 지정합니다. 기본적으로 컴퓨터에서 사용 가능한 모든 코어를 사용할 수 있습니다. 설정 파일에서 사용할 코어 수를 구성할 수 있습니다. |
| /InIsolation | 격리된 프로세스에서 테스트를 실행합니다. 이렇게 격리하면 테스트의 오류에서 vstest.console.exe 프로세스가 중지될 가능성이 적지만 테스트 실행 속도가 느려질 수 있습니다. |
| /TestAdapterPath:[경로] |
vstest.console.exe 프로세스에서 테스트 실행의 지정된 경로(있는 경우)에서 사용자 지정 테스트 어댑터를 사용하도록 합니다. 예: /TestAdapterPath:[pathToCustomAdapters] |
| /Platform:[플랫폼 유형] | 현재 런타임에서 결정된 플랫폼 대신 지정된 플랫폼 아키텍처를 사용하도록 합니다. 값은 대/소문자를 구분하지 않습니다. 허용되는 값은 x86, ,x64ARM, ARM64, S390xPpc64le, RiscV64및 LoongArch64.Windows x86 및 x64만 안정적으로 강제 적용할 수 있습니다. 대부분의 시스템에서 x64로 결과를 지정합니다 ARM. 유효한 값 목록에 없는 런타임에서 실행하려면 이 옵션을 지정하지 마세요. |
| /Framework: [Framework 버전] | 테스트 실행에 사용할 대상 .NET 버전입니다. 최신 프레임워크 짧은 양식은 NuGet 프레임워크 파서(예 net48net6.0: 또는 net10.0 긴 형식(예: .NETFramework,Version=v4.8 및))에 의해 허용 및 .NETCoreApp,Version=v10.0구문 분석됩니다.레거시 별칭 Framework35, Framework40, Framework45및 FrameworkCore10FrameworkUap10 또한 허용됩니다.TargetFrameworkAttribute는 어셈블리에서 이 옵션을 자동으로 검색하는 데 사용되며, 기본적으로 특성이 없을 때로 Framework40 설정됩니다. .NET Core 어셈블리에서 TargetFrameworkAttribute 제거하는 경우 이 옵션을 명시적으로 지정해야 합니다.대상 프레임워크가 Framework35지정된 경우 테스트는 CLR 4.0 "호환 모드"에서 실행됩니다. 예: /Framework:net8.0 |
| /TestCaseFilter:[식] | 지정된 식과 일치하는 테스트를 실행합니다. <식> [|<식>]<>속성<=>값 형식입니다. 예: /TestCaseFilter:"Priority=1"예: /TestCaseFilter:"TestCategory=Nightly|FullyQualifiedName=Namespace.ClassName.MethodName"/TestCaseFilter 명령줄 옵션은 /Tests 명령줄 옵션과 함께 사용할 수 없습니다. 식을 만들고 사용하는 방법에 대한 자세한 내용은 TestCase 필터참조하세요. 셸에 직접 필터를 입력하는 경우 셸에서 이스케이프 필터 식을 참조하세요. |
| /Environment:[NAME]=[VALUE] | 테스트 호스트 프로세스에 대한 환경 변수의 값을 설정합니다. 변수가 없으면 변수를 만들고, 변수가 있는 경우 재정의합니다. 이 옵션은 /InIsolation 을 의미하고 격리된 프로세스에서 테스트를 강제로 실행합니다. 옵션을 여러 번 지정하여 여러 변수를 설정합니다. 짧은 형식: /e. 예: /e:VARIABLE1=VALUE1 |
| /? | 사용 정보를 표시합니다. |
| /Logger:[uri/friendlyname] | 테스트 결과에 대한 로거를 지정합니다. 여러 로거를 사용하도록 설정하려면 매개 변수를 여러 번 지정합니다. 예: 결과를 Visual Studio TRX(테스트 결과 파일)에 기록하려면 /Logger:trx [; LogFileName=<기본값은 고유한 파일 이름>] 실행당 별도의 타임스탬프가 지정된 파일을 유지하는 대신 LogFileName 사용합니다LogFilePrefix=<prefix>.
LogFileName 는 명시적 이름을 설정하고 이전 파일을 덮어쓰지만 LogFilePrefix 그렇지 않습니다.자세한 내용은 로깅 예제를 참조하세요. |
| /ListTests:[파일 이름] | 지정된 테스트 컨테이너에서 검색된 테스트를 나열합니다. 짧은 형식: /lt. 참고: /TestCaseFilter 옵션은 테스트를 나열할 때 영향을 주지 않습니다. 실행되는 테스트만 제어합니다. |
| /비난 | 비난 모드에서 테스트를 실행합니다. 이 옵션은 테스트 호스트가 충돌하는 문제가 있는 테스트를 격리하는 데 유용합니다. 크래시가 감지되면 크래시 전에 실행된 테스트 순서를 캡처하는 시퀀스 파일을 TestResults/<Guid>/<Guid>_Sequence.xml 만듭니다.예를 들어 /Blame:CollectDump;DumpType=full 크래시 또는 중단 덤프를 수집할 /Blame:CollectHangDump;TestTimeout=90m;HangDumpType=mini수도 있습니다. 해당하는 dotnet test 스위치는 다음과 같습니다 --blame-crash--blame-hang.전체 옵션 매트릭스 및 덤프 수집 요구 사항은 Blame 데이터 수집기를 참조하세요. |
| /Diag:[파일 이름] | 진단 추적 로그를 지정된 파일에 씁니다. 추적 수준을 /Diag:<file name>;tracelevel=<off\|error\|warning\|info\|verbose> 설정합니다(기본값은 verbose). |
| /ResultsDirectory:[ 경로] | 테스트 결과 디렉터리가 없는 경우 지정된 경로에 만들어집니다. 예: /ResultsDirectory:<pathToResultsDirectory> |
| /ParentProcessId:[parentProcessId] | 현재 프로세스를 시작하는 부모 프로세스의 프로세스 ID입니다. |
| /Port:[포트] | 소켓 연결 및 이벤트 메시지 수신을 위한 포트입니다. |
| /Collect:[dataCollector friendlyName] | 테스트 실행에 대해 데이터 수집기를 사용하도록 설정합니다. 추가 정보. |
| @[file] | 지정된 응답 파일에서 추가 옵션을 읽습니다. 파일의 인수는 공백(공백 또는 줄 바꿈)으로 구분되고 따옴표는 지원되므로 옵션은 여러 줄에 걸쳐 있습니다. 예: vstest.console.exe @options.rsp |
팁
옵션 및 값은 대/소문자를 구분하지 않습니다.
예제
vstest.console.exe 실행하기 위한 구문은 다음과 같습니다.
vstest.console.exe [TestFileNames] [Options]
기본적으로 이 명령은 테스트가 검색되지 않더라도 정상적으로 종료될 때 0을 반환합니다. 테스트가 검색되지 않은 경우 0이 아닌 값을 반환하려면 <TreatNoTestsAsError>true</TreatNoTestsAsError> runsettings 옵션을 사용합니다.
다음 명령은 테스트 라이브러리 myTestProject.dll대한 vstest.console.exe 실행합니다.
vstest.console.exe myTestProject.dll
다음 명령은 여러 테스트 파일을 사용하여 vstest.console.exe 실행합니다. 테스트 파일 이름을 공백으로 구분합니다.
vstest.console.exe myTestFile.dll myOtherTestFile.dll
다음 명령은 몇 가지 옵션을 사용하여 vstest.console.exe 실행합니다. 격리된 프로세스의 myTestFile.dll 파일에서 테스트를 실행하고 Local.RunSettings 파일에 지정된 설정을 사용합니다. 또한 "Priority=1"로 표시된 테스트만 실행하고 결과를 .trx 파일에 기록합니다.
vstest.console.exe myTestFile.dll /Settings:Local.RunSettings /InIsolation /TestCaseFilter:"Priority=1" /Logger:trx
다음 명령은 테스트 라이브러리 myTestProject.dll대한 /blame 옵션을 사용하여 vstest.console.exe 실행합니다.
vstest.console.exe myTestFile.dll /blame
테스트 호스트 크래시가 발생하면 sequence.xml 파일이 생성됩니다. 이 파일에는 충돌 시 실행 중이던 특정 테스트를 포함하여 실행 시퀀스에서 테스트의 정규화된 이름이 포함됩니다.
테스트 호스트 크래시가 없으면 sequence.xml 파일이 생성되지 않습니다.
생성된 sequence.xml 파일의 예:
<?xml version="1.0"?>
<TestSequence>
<Test Name="TestProject.UnitTest1.TestMethodB" Source="D:\repos\TestProject\TestProject\bin\Debug\TestProject.dll" />
<Test Name="TestProject.UnitTest1.TestMethodA" Source="D:\repos\TestProject\TestProject\bin\Debug\TestProject.dll" />
</TestSequence>
이 경우 <Test Name> 마지막으로 나열된 테스트는 충돌 시 실행 중인 테스트입니다.
종료 코드
vstest.console.exe 두 개의 종료 코드 중 하나를 반환합니다.
| 코드 | Meaning |
|---|---|
0 |
성공. 요청된 작업이 완료되고 테스트 실행의 경우 실행된 모든 테스트가 통과되었습니다. |
1 |
실패. 예를 들어 하나 이상의 테스트가 실패했거나, 실행 오류가 보고되었거나, 명령줄이 잘못되었거나, 누락되었거나, 테스트 원본을 로드할 수 없거나, 실행이 중단되거나 취소되었습니다. |
프로세스는 다른 값을 반환하지 않습니다. 테스트를 실행할 dotnet test때 .NET SDK는 실행이 동일한 방식으로 실패할 때 0이 아닌 종료 코드를 표시합니다.
검색에서 일치하는 테스트를 찾을 수 없으면 실행기는 오류 대신 경고를 출력하고 기본적으로 여전히 반환합니다 0. 0개의 테스트를 검색하거나 선택하는 실행이 대신 반환 1 되도록 하려면 .runsettings 파일의 RunConfiguration 요소에 설정합니다<TreatNoTestsAsError>true</TreatNoTestsAsError>. 자세한 내용은 .runsettings 파일을 사용하여 단위 테스트 구성을 참조하세요.
셸의 이스케이프 필터 식
/TestCaseFilter 식은 셸과 테스트 플랫폼 모두에서 구문 분석되므로 일부 문자는 vstest.console.exe 받기 전에 셸별 이스케이프가 필요합니다. 이 문서의 앞부분에 있는 예제와 같이 전체 식을 인용하면 대부분의 문제를 방지할 수 있습니다. 다음 경우에는 각별한 주의가 필요합니다.
PowerShell: 쉼표(
,)는 배열 연산자이고 세미콜론(;)은 문 구분 기호입니다. 예를 들어/TestCaseFilter:"FullyQualifiedName=MyNamespace.MyClass.MyMethod"문자 그대로 전달되도록 전체 필터 식을 인용합니다.Bash 및 zsh(Linux 및 macOS): (포함 안 됨) 연산자를 사용할
!~때 백슬래시로 이스케이프!(예--filter FullyQualifiedName\!~IntegrationTests: .와 함께dotnet test). 또한 셸에 특별한 의미가 있는 문자(예:<제>네릭 형식 인수 목록),가 포함된 값을 인용합니다.dotnet test --filter "FullyQualifiedName=MyNamespace.MyClass<Type1,Type2>.MyMethod"
테스트 프레임워크당 전체 필터링 참조 및 지원되는 속성은 TestCase 필터를 참조하세요.
로깅 예제
각 로거는 자체 매개 변수를 정의합니다. trx와 달리 콘솔 로거를 사용하면 세부 정보 표시 수준을 설정할 수 있습니다. 자세한 내용은 명령줄을 입력 VSTest.Console/? 합니다.
콘솔 로거의 예는 다음과 같습니다.
vstest.console.exe myTestFile.dll /logger:console;verbosity=detailed
지원되는 세부 정보 수준에는 자동, 최소, 정상 및 상세 정보가 포함됩니다.
PowerShell에서는 따옴표를 사용해야 합니다.
vstest.console.exe myTestFile.dll /logger:"console;verbosity=detailed"
사용 가능한 로거의 전체 목록과 사용자 고유의 로거를 작성하기 위한 지침은 vstest 리포지토리의 보고 테스트 결과를 참조하세요.
UWP 예제
UWP의 경우 appxrecipe 파일을 DLL 대신 참조해야 합니다.
vstest.console.exe /Logger:trx /Platform:x64 /framework:frameworkuap10 UnitTestsUWP\bin\x64\Release\UnitTestsUWP.build.appxrecipe
환경 변수
테스트 플랫폼은 여러 환경 변수를 인식합니다. 다음은 명령줄에서 테스트를 실행할 때 가장 유용한 항목입니다. 전체 목록은 vstest 리포지토리 의 테스트 플랫폼에서 이해하는 환경 변수 를 참조하세요.
| Variable | 묘사 |
|---|---|
VSTEST_CONNECTION_TIMEOUT |
테스트 플랫폼 구성 요소(vstest.console.exe, testhost 및 데이터 수집기) 간의 연결을 설정하기 위한 시간 제한(초)입니다. 기본값은 90입니다. 느린 컴퓨터에서 또는 네트워크 대기 시간으로 인해 연결 시간 제한이 발생하는 경우 이를 늘립니다. |
VSTEST_DIAG |
진단 로깅을 사용하도록 설정하고 로그 파일의 경로를 지정합니다. /Diag 옵션에 해당합니다. |
VSTEST_DIAG_VERBOSITY |
사용하도록 설정된 경우 VSTEST_DIAG 진단 로깅의 세부 정보를 설정합니다. 유효한 값은 Verbose, Info및 WarningError (기본값은 )입니다Verbose. |
VSTEST_HOST_DEBUG |
testhost 프로세스의 디버깅을 사용하도록 설정하려면 비어 있지 않은 값으로 설정합니다. |
VSTEST_RUNNER_DEBUG |
실행기(vstest.console.exe)의 디버깅을 사용하도록 설정하려면 비어 있지 않은 값으로 설정합니다. |
VSTEST_DUMP_PATH |
비난 크래시 덤프가 저장되는 기본 디렉터리를 재정의합니다. |
VSTEST_DUMP_FORCEPROCDUMP |
비어 있지 않은 값으로 설정하여 ProcDump를 크래시 덤프 수집에 사용하도록 강제합니다. |
VSTEST_DISABLE_UTF8_CONSOLE_ENCODING |
콘솔 출력에서 1 UTF-8 인코딩 설정을 사용하지 않도록 설정합니다. |
VSTEST_CONSOLE_PATH |
.NET SDK의 전달 앱에서 사용하는vstest.console.exe실행 파일의 경로입니다dotnet test.
-p:VSTestConsolePath 프로젝트에서 실행할 dotnet test 때와 동일합니다. |
관련 콘텐츠
- 빠른 시작: vstest 리포지토리의 명령줄에서 테스트 실행
- .runsettings 파일을 사용하여 단위 테스트 구성
- vstest 리포지토리에서 데이터 수집기 만들기
- dotnet test 명령 참조