Microsoft.Testing.Platform
명령줄, CI(연속 통합) 파이프라인, Visual Studio 테스트 탐색기 및 Visual Studio Code에서 테스트를 실행하기 위한 VSTest 대한 가볍고 이식 가능한 대안입니다. 이 문서에서는 Microsoft.Testing.Platform과 VSTest의 주요 차이점에 대해 알아봅니다.
테스트 실행의 차이점
테스트는 실행자에 따라 다른 방법으로 실행됩니다.
VSTest 테스트 실행
VSTest는 Visual Studio, .NET SDK 및 Microsoft.TestPlatform NuGet 패키지의 독립 실행형 도구로 제공됩니다. VSTest는 테스트를 실행하는 실행 파일인 vstest.console.exe
을 직접 사용하거나 dotnet test
을 통해 사용할 수 있습니다.
Microsoft.Testing.Platform 테스트 실행
Microsoft.Testing.Platform은 테스트 프로젝트에 직접 포함되며 추가 실행 파일을 제공하지 않습니다. 프로젝트 실행 파일을 실행하면 테스트가 실행됩니다. Microsoft.Testing.Platform 테스트 실행에 대한 자세한 내용은 Microsoft.Testing.Platform 개요:테스트 실행 및 디버그를 참조하세요.
네임스페이스 및 NuGet 패키지
Microsoft.Testing.Platform
및 VSTest를 숙지하려면 각각에 사용되는 네임스페이스 및 NuGet 패키지를 이해하는 것이 유용합니다.
VSTest 네임스페이스
VSTest는 테스트 플랫폼이라고도 하는 테스트 도구의 컬렉션입니다. VSTest 소스 코드는 오픈 소스이며 microsoft/vstest GitHub 리포지토리에서 사용할 수 있습니다. 코드는 Microsoft.TestPlatform.*
네임스페이스를 사용합니다.
VSTest는 확장 가능하며 일반적인 형식은 Microsoft.TestPlatform.ObjectModel NuGet 패키지에 배치됩니다.
Microsoft.Testing.Platform 네임스페이스
Microsoft.Testing.Platform은 Microsoft.Testing.Platform NuGet 패키지 및 Microsoft.Testing.*
네임스페이스의 다른 라이브러리를 기반으로 합니다. VSTest와 마찬가지로 Microsoft.Testing.Platform
오픈 소스이며 microsoft/testfx GitHub 리포지토리가 있습니다.
통신 프로토콜
메모
Visual Studio 테스트 탐색기는 17.12 이후 Microsoft.Testing.Platform 프로토콜을 지원합니다. 이전 버전의 Visual Studio를 사용하여 테스트를 실행/디버그하는 경우 테스트 탐색기는 vstest.console.exe
및 이전 프로토콜을 사용하여 이러한 테스트를 실행합니다.
Microsoft.Testing.Platform은 JSON-RPC 기반 프로토콜을 사용하여 Visual Studio와 테스트 실행기 프로세스 간에 통신합니다. 프로토콜은 MSTest GitHub 리포지토리문서화되어 있습니다.
VSTest는 JSON 기반 통신 프로토콜도 사용하지만 JSON-RPC 기반이 아닙니다.
새 프로토콜 사용 안 림
테스트 탐색기에서 새 프로토콜을 사용하지 않도록 설정하려면 프로젝트를 편집하여 다음 속성을 추가할 수 있습니다. <DisableTestingPlatformServerCapability>true</DisableTestingPlatformServerCapability>
.
Visual Studio에서 미리 보기 기능 옵션으로 이동하여 "테스트 플랫폼 서버 모드 사용" 옵션을 선택 취소할 수도 있습니다.
실행 파일
VSTest는 여러 실행 파일, 특히 vstest.console.exe
, testhost.exe
및 datacollector.exe
제공합니다. 그러나 MSTest는 테스트 프로젝트에 직접 포함되며 다른 실행 파일을 제공하지 않습니다. 테스트 프로젝트가 컴파일하는 실행 파일은 모든 테스트 도구를 호스트하고 테스트를 실행하는 데 필요한 모든 작업을 수행하는 데 사용됩니다.
VSTest에서 마이그레이션
테스트 프레임워크와 관련된 단계 외에도 Microsoft.Testing.Platform
맞게 테스트 인프라를 업데이트해야 합니다.
dotnet test
dotnet test
명령줄 옵션은 관련된 인수를 빌드하고 관련 인수를 테스트하는 두 가지 범주로 나뉩니다.
빌드 관련 인수는 dotnet build
명령에 전달되기 때문에 새 플랫폼에 대해 업데이트할 필요가 없습니다. 빌드 관련 인수는 다음과 같습니다.
-a|--arch <ARCHITECTURE>
--artifacts-path <ARTIFACTS_DIR>
-c|--configuration <CONFIGURATION>
-f|--framework <FRAMEWORK>
-e|--environment <NAME="VALUE">
--interactive
--no-build
--nologo
--no-restore
-o|--output <OUTPUT_DIRECTORY>
--os <OS>
-r|--runtime <RUNTIME_IDENTIFIER>
-v|--verbosity <LEVEL>
테스트 관련 인수는 VSTest에 따라 달라지므로 새 플랫폼에 맞게 변환해야 합니다. 다음 표에서는 VSTest 인수와 새 플랫폼 간의 매핑을 보여줍니다.
VSTest 인수 | 새 플랫폼 주장 |
---|---|
--test-adapter-path <ADAPTER_PATH> |
지원되지 않음 |
--blame |
지원되지 않음 |
--blame-crash |
--crashdump
크래시 덤프 확장를 필요로 합니다. |
--blame-crash-dump-type <DUMP_TYPE> |
--crashdump-type
크래시 덤프 확장를 필요로 합니다. |
--blame-crash-collect-always |
지원되지 않음 |
--blame-hang |
--hangdump 에서 메모리 덤프 확장가 필요합니다. |
--blame-hang-dump-type <DUMP_TYPE> |
--hangdump-type 에서 메모리 덤프 확장가 필요합니다. |
--blame-hang-timeout <TIMESPAN> |
--hangdump-timeout 에서 메모리 덤프 확장가 필요합니다. |
--collect <DATA_COLLECTOR_NAME> |
데이터 수집기 종속성 |
-d\|--diag <LOG_FILE> |
--diagnostic |
--filter <EXPRESSION> |
선택한 테스트 프레임워크에 따라 다름 |
-l\|--logger <LOGGER> |
로거에 따라 다름 |
--results-directory <RESULTS_DIR> |
--results-directory <RESULTS_DIR> |
-s\|--settings <SETTINGS_FILE> |
선택한 테스트 프레임워크에 따라 다름 |
-t\|--list-tests |
--list-tests |
-- <RunSettings arguments> |
--test-parameter ( VSTestBridge에서 제공) |
중요하다
Microsoft.Testing.Platform
인수를 지정하기 전에 --
추가하여 새 플랫폼 인수와 dotnet test
인수를 구분해야 합니다. 예를 들어 dotnet test --no-build -- --list-tests
.
vstest.console.exe
vstest.console.exe
직접 사용하는 경우 dotnet test
명령으로 바꾸는 것이 좋습니다.
테스트 탐색기
Visual Studio 또는 Visual Studio Code 테스트 탐색기를 사용하는 경우 새 테스트 플랫폼에 대한 지원을 사용하도록 설정해야 할 수 있습니다.
비주얼 스튜디오
Visual Studio 테스트 탐색기는 버전 17.14부터 새 테스트 플랫폼을 지원합니다. 이전 버전을 사용하는 경우 Visual Studio를 최신 버전으로 업데이트해야 할 수 있습니다.
비주얼 스튜디오 코드
Visual Studio Code 테스트 탐색기는 버전 X부터 새 테스트 플랫폼을 지원합니다.
Azure DevOps
Azure DevOps 작업을 사용하는 경우 새 테스트 플랫폼을 사용하도록 파이프라인을 업데이트해야 할 수 있습니다.
VSTest 작업
Azure DevOps에서 VSTest 작업 사용하는 경우 .NET Core 작업바꿀 수 있습니다.
.NET Core 작업
.NET Core 작업사용하는 경우 변경이 필요하지 않습니다.
.NET