.NET 테스트 프레임워크와 테스트 플랫폼은 테스트를 검색하고 실행하기 위해 함께 작동하는 다양한 구성 요소입니다.
- 테스트 프레임워크는 MSTest, NUnit, xUnit.net 또는 TUnit과 같이 작성하는 테스트 모델을 정의합니다.
- 테스트 플랫폼은 테스트를 실행하고, IDE 및 CLI와 통합하며, 공유 확장 지점을 제공합니다.
다음 두 테스트 플랫폼 중에서 선택할 수 있습니다.
- VSTest
- MTP(Microsoft.Testing.Platform)
팁 (조언)
가장 간단한 설정의 경우 리포지토리에 대해 하나의 플랫폼을 선택하고 해당 플랫폼에 대해 테스트 프로젝트, CI 및 도구를 일관되게 구성합니다. VSTest 기반 및 Microsoft.Testing.Platform 기반 .NET 테스트 프로젝트를 동일한 솔루션에 혼합하거나 해당 시나리오가 지원되지 않으므로 구성을 실행하지 마세요. VSTest에 의존하는 비 .NET 테스트(예: C++ 또는 JavaScript 테스트)를 실행하는 경우 MTP 기반 .NET 테스트와 별도의 구성으로 해당 테스트를 실행합니다.
플랫폼을 선택하는 방법
다음 시나리오를 사용하여 신속하게 선택합니다.
| 사용 사례 | 선택 | 왜 |
|---|---|---|
| 네이티브 AOT 또는 트리밍 테스트 실행 시나리오가 필요합니다. | Microsoft.Testing.Platform | MTP는 이러한 최신 배포 시나리오를 지원하지만 VSTest는 지원하지 않습니다. |
| 패키지된 WinUI 또는 UWP 테스트 프로젝트를 빌드하고 있습니다. | VSTest | 이러한 프로젝트 형식은 현재 MTP에서 지원되지 않습니다. |
| .NET 테스트와 비 .NET 테스트 어댑터(예: JavaScript 또는 C++ 어댑터)를 혼합해야 합니다. | VSTest | VSTest는 혼합 언어 어댑터 시나리오를 지원하지만 MTP는 .NET 관련됩니다. |
테스트 프로젝트가 일반 실행 파일(dotnet run직접 실행 파일 실행 dotnet watch및 시작 프로젝트 F5 흐름)처럼 동작하도록 합니다. |
Microsoft.Testing.Platform | MTP는 실행 가능 우선이므로 테스트 앱은 로컬 및 CI 워크플로에서 표준 .NET 앱처럼 실행됩니다. |
| 기존 도구에서 오랫동안 확립된 통합을 사용합니다. | VSTest | VSTest는 기존 제품, 작업 및 파이프라인에서 가장 긴 호환성 실적을 보유하고 있습니다. MTP 지원은 에코시스템에서 증가하고 있지만 일부 통합은 VSTest보다 뒤쳐질 수 있습니다. |
| 엄격한 기본값 및 명시적 동작을 선호합니다. | Microsoft.Testing.Platform | MTP는 간단한 옵트인 확장 모델 및 빌드 시간 등록을 사용하여 결정적 실행을 선호합니다. 예를 들어 테스트가 실행되지 않을 때 실패하고, 환경 종속 가변성을 줄이고, 환경당 개별 확장을 사용하지 않도록 설정할 수 있습니다. |
| 이전 버전과 호환되는 더 부드럽고 광범위한 기본값을 선호합니다. | VSTest | 두 플랫폼 모두 이전 버전과의 호환성을 중요하게 사용합니다. VSTest는 다양한 기존 도구 체인에 대한 호환성 지향 기본값의 우선 순위를 지정하고 MTP는 자체 확장 모델 내에서 이전 버전과의 호환성을 제공합니다. |
| 현재 워크플로에서 VSTest 관련 문제 또는 동작에 의해 차단됩니다. | Microsoft.Testing.Platform | 대부분의 시나리오에서는 런타임 모델 및 확장 아키텍처의 차이로 인해 MTP로 이동할 때 동일한 워크플로가 영향을 받지 않습니다. |
특정 사용 사례가 나열되지 않은 경우 두 플랫폼 모두 유효한 선택 사항입니다.
통합 및 도구 지원
| 통합 영역 | VSTest | Microsoft.Testing.Platform |
|---|---|---|
| IDE 통합 | VSTest 프로토콜 및 어댑터에 의존하는 Visual Studio 및 기타 도구 간에 완성도 높은 통합 | 에코시스템의 일부에서 지속적인 통합 작업을 통해 Visual Studio 및 Visual Studio Code 시나리오에서 지원됩니다. |
| CI 및 외부 도구 | 기존 Microsoft 및 비 Microsoft 도구 및 작업에 대한 광범위한 지원. Azure DevOps VSTest 작업(VSTest@3, vstest.console) 또는 .NET 작업(DotNetCoreCLI@2, dotnet test)을 사용할 수 있습니다. |
CI 및 최신 .NET 워크플로에서 작동하지만 일부 타사 통합은 여전히 VSTest보다 뒤쳐질 수 있습니다. Azure DevOps .NET 작업(DotNetCoreCLI@2, dotnet test)을 사용합니다. |
dotnet test 동작 |
기본 VSTest 모드입니다. VSTest 인수 및 동작이 적용되었습니다. | 네이티브 MTP 모드는 .NET 10 SDK 이상에서 사용할 수 있습니다. |
모드 및 인수에 대한 dotnet test 자세한 내용은 테스트를 dotnet test참조하세요.
테스트 프레임워크에서 시작
VSTest를 선택하는 경우
- MSTest: MSTest를 사용하여 테스트 실행
- NUnit: NUnit 및 Microsoft.Testing.Platform
- xUnit.net: xUnit.net 시작
- TUnit: VSTest에서 지원되지 않습니다. Microsoft.Testing.Platform을 사용합니다.
Microsoft.Testing.Platform을 선택하는 경우
- MSTest: MSTest를 사용하여 테스트 실행
- NUnit: NUnit의 Microsoft.Testing.Platform 지원(NUnit Runner)
- xUnit.net: Microsoft Testing Platform(xUnit.net v3)
- TUnit: TUnit 설명서
다음 단계:
- MTP 개념 알아보기: Microsoft.Testing.Platform 개요
- VSTest 옵션 이해: VSTest 옵션
- VSTest에서 마이그레이션: VSTest에서 Microsoft.Testing.Platform으로 마이그레이션
- 기능 추가: Microsoft.Testing.Platform 기능
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET