Share via


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는 실행기 실행 파일을 사용하여 직접 또는 dotnet test(을)를 통해 사용할 수 있는 vstest.console.exe(이)라는 테스트를 실행합니다.

Microsoft.Testing.Platform 테스트 실행

Microsoft.Testing.Platform은 테스트 프로젝트에 직접 포함되며 추가 실행 파일을 제공하지 않습니다. 프로젝트 실행 파일을 실행하면 테스트가 실행됩니다. Microsoft.Testing.Platform 테스트 실행에 대한 자세한 내용은 Microsoft.Testing.Platform 개요: 테스트 실행 및 디버그를 참조 하세요.

네임스페이스 및 NuGet 패키지

VSTest를 숙 Microsoft.Testing.Platform 지하려면 각각에 사용되는 네임스페이스 및 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 기반은 아닙니다.

새 프로토콜 사용 안 함

테스트 탐색기에서 새 프로토콜을 사용하지 않도록 설정하려면 csproj를 편집하고 TestingPlatformServer 기능을 제거할 수 있습니다.

<ItemGroup>
    <ProjectCapability Remove="TestingPlatformServer" />
</ItemGroup>

실행 파일

VSTest는 특히 vstest.console.exe, testhost.exedatacollector.exe(와)과 같은 여러 실행 파일을 제공합니다. 그러나 MSTest는 테스트 프로젝트에 직접 포함되며 다른 실행 파일을 제공하지 않습니다. 테스트 프로젝트가 컴파일하는 실행 파일은 모든 테스트 도구를 호스트하고 테스트를 실행하는 데 필요한 모든 작업을 수행하는 데 사용됩니다.