다음을 통해 공유


Microsoft.Testing.Platform과 VSTest 비교

Microsoft.Testing.Platform은 명령줄, CI(연속 통합) 파이프라인, Visual Studio 테스트 탐색기 및 Visual Studio Code에서 테스트를 실행하기 위한 VSTest의 경량의 이식 가능한 대안입니다. 이 문서에서는 MSTest 실행기와 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.10 이상의 미리 보기 버전에서 Microsoft.Testing.Platform 프로토콜을 지원합니다. 이전 버전의 Visual Studio를 사용하여 테스트를 실행/디버그하는 경우 테스트 탐색기는 vstest.console.exe 및 이전 프로토콜을 사용하여 이러한 테스트를 실행합니다.

Microsoft.Testing.Platform은 JSON-RPC 기반 프로토콜을 사용하여 Visual Studio와 테스트 실행기 프로세스 간에 통신합니다. 프로토콜은 MSTest GitHub 리포지토리에 설명되어 있습니다.

VSTest는 JSON 기반 통신 프로토콜도 사용하지만 JSON-RPC 기반은 아닙니다.

새 프로토콜 사용 안 함

테스트 탐색기에서 새 프로토콜을 사용하지 않도록 설정하려면 프로젝트를 편집하여 다음 속성을 추가할 수 있습니다. <DisableTestingPlatformServerCapability>true</DisableTestingPlatformServerCapability>.

실행 파일

VSTest는 특히 vstest.console.exe, testhost.exedatacollector.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> 지원되지 않음

중요하다

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

Visual Studio 테스트 탐색기는 버전 17.14부터 새 테스트 플랫폼을 지원합니다. 이전 버전을 사용하는 경우 Visual Studio를 최신 버전으로 업데이트해야 할 수 있습니다.

비주얼 스튜디오 코드

Visual Studio Code 테스트 탐색기는 버전 X부터 새 테스트 플랫폼을 지원합니다.

Azure DevOps

Azure DevOps 작업을 사용하는 경우 새 테스트 플랫폼을 사용하도록 파이프라인을 업데이트해야 할 수 있습니다.

VSTest 작업

Azure DevOps에서 VSTest 작업 사용하는 경우 .NET Core 작업바꿀 수 있습니다.

.NET Core 작업

.NET Core 작업사용하는 경우 변경이 필요하지 않습니다.