MSTest SDK 개요
MSTest.Sdk는 MSTest 앱을 빌드하기 위한 MSBuild 프로젝트 SDK입니다. 이 SDK 없이 MSTest 앱을 빌드할 수 있지만 MSTest SDK는 다음과 같습니다.
- MSTest를 사용하는 테스트에 최고 수준의 환경을 제공하도록 조정되었습니다.
- 대부분의 사용자에게 권장되는 대상입니다.
- 다른 사용자를 위해 구성하기 쉽습니다.
MSTest SDK는 MSTest 실행기를 사용하여 테스트를 발견하고 실행합니다.
프로젝트의 Project
노드의 Sdk
특성을 업데이트하기만 하면 프로젝트에서 MSTest.Sdk
를 사용하도록 설정할 수 있습니다.
<Project Sdk="MSTest.Sdk/3.3.1">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
<!-- references to the code to test -->
</Project>
참고 항목
/3.3.1
는 SDK의 첫 번째 버전이라 예제로 제공되지만 최신 버전으로 바꿀 수 있습니다.
버전 처리를 간소화하려면 global.json 파일을 사용하여 솔루션 수준에서 SDK 버전을 설정하는 것이 좋습니다. 예를 들어 프로젝트 파일은 다음과 같습니다.
<Project Sdk="MSTest.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
<!-- references to the code to test -->
</Project>
그런 다음, 다음과 같이 global.json 파일에서 MSTest.Sdk
버전을 지정합니다.
{
"msbuild-sdks": {
"MSTest.Sdk": "3.3.1"
}
}
자세한 내용은 MSBuild 프로젝트 SDK 사용을 참조하세요.
프로젝트를 build
하면 프로젝트에서 설정한 표준 NuGet 워크플로를 사용하여 필요한 모든 구성 요소가 복원되고 설치됩니다.
테스트를 빌드하고 실행하는 데 다른 어떤 것도 필요하지 않으며 "클래식" MSTest 프로젝트에서 사용하는 것과 동일한 도구(예: dotnet test
또는 Visual Studio)를 사용할 수 있습니다.
Important
MSTest.Sdk
로 전환하여 MSTest runner를 dotnet test와 함께 사용하도록 옵트인합니다. 이 경우 CI 및 로컬 CLI 호출을 수정해야 하는데 .runsettings의 사용 가능한 항목에도 영향을 줍니다. MSTest.Sdk
를 사용하고 대신 실행기를 전환하여 이전 통합 및 도구를 계속 유지할 수 있습니다.
실행기 선택
기본적으로 MSTest SDK는 MSTest runner를 사용하지만 <UseVSTest>true</UseVSTest>
속성을 추가하여 VSTest로 전환할 수 있습니다.
MSTest 실행기 확장
NuGet 패키지 확장 집합을 통해 MSTest runner
환경을 사용자 지정할 수 있습니다. 이 환경을 간소화하고 개선하기 위해 MSTest SDK에 다음 두 기능이 도입되었습니다.
MSTest runner 프로필
프로필 개념을 사용하면 테스트 프로젝트에 적용될 기본 구성 및 확장 집합을 선택할 수 있습니다.
다음 세 가지 프로필 중 하나와 함께 TestingExtensionsProfile
속성을 사용하여 프로필을 설정할 수 있습니다.
Default
- 이 버전의 MSTest.SDK에 권장되는 확장을 사용하도록 설정합니다. 속성이 명시적으로 설정되지 않은 경우 이는 기본값입니다.None
- 사용하도록 설정된 확장이 없습니다.AllMicrosoft
- Microsoft에서 제공한 모든 확장(제한적인 라이선스가 있는 확장 포함)을 사용하도록 설정합니다.
다음은 None
프로필을 사용한 전체 예입니다.
<Project Sdk="MSTest.Sdk/3.3.1">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<TestingExtensionsProfile>None</TestingExtensionsProfile>
</PropertyGroup>
<!-- references to the code to test -->
</Project>
확장 사용 또는 사용 안 함
확장은 Enable[NugetPackageNameWithoutDots]
패턴을 사용하여 MSBuild 속성으로 사용 및 사용하지 않도록 설정할 수 있습니다.
예를 들어, 크래시 덤프 확장(NuGet 패키지 Microsoft.Testing.Extensions.CrashDump)을 사용하도록 설정하려면 true
로 설정된 다음 EnableMicrosoftTestingExtensionsCrashDump
속성을 사용할 수 있습니다.
<Project Sdk="MSTest.Sdk/3.3.1">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<EnableMicrosoftTestingExtensionsCrashDump>true</EnableMicrosoftTestingExtensionsCrashDump>
</PropertyGroup>
<!-- references to the code to test -->
</Project>
사용 가능한 모든 확장 목록은 Microsoft.Testing.Platform 확장을 참조하세요.
Warning
각 확장별로 라이선스 조건이 다를 수 있으므로 검토하는 것이 중요합니다.
사용 및 사용하지 않도록 설정된 확장은 선택한 확장 프로필에서 제공하는 확장과 결합됩니다.
이 속성 패턴은 암시적 Default
프로필 위에 추가 확장을 사용하도록 설정하는 데 사용할 수 있습니다(이전 CrashDumpExtension 예제에서 볼 수 있음).
선택한 프로필에서 오는 확장을 사용하지 않도록 설정할 수도 있습니다. 예를 들어, <EnableMicrosoftTestingExtensionsCodeCoverage>false</EnableMicrosoftTestingExtensionsCodeCoverage>
를 설정하여 MS Code Coverage
확장을 사용하지 않도록 설정합니다.
<Project Sdk="MSTest.Sdk/3.3.1">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<EnableMicrosoftTestingExtensionsCodeCoverage>false</EnableMicrosoftTestingExtensionsCodeCoverage>
</PropertyGroup>
<!-- references to the code to test -->
</Project>
기능
실행기 및 실행기별 확장 선택 외에도 MSTest.Sdk
는 테스트 경험을 단순화하고 향상시키는 추가 기능도 제공합니다.
.NET Aspire를 사용하여 테스트
.NET Aspire는 관찰 가능하고 프로덕션 준비가 된 분산 애플리케이션을 구축하기 위한 독자적인 클라우드 지원 스택입니다. .NET Aspire는 특정 클라우드 네이티브 문제를 처리하는 NuGet 패키지 컬렉션을 통해 제공됩니다. 자세한 내용은 .NET Aspire 문서를 참조하세요.
참고 항목
이 기능은 MSTest.Sdk 3.4.0에서 사용할 수 있습니다.
속성 EnableAspireTesting
를 true
로 설정하면 Aspire
및 MSTest
를 사용하여 테스트하는 데 필요한 모든 종속성 및 기본 using
지시문을 가져올 수 있습니다.
<Project Sdk="MSTest.Sdk/3.4.0">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<EnableAspireTesting>true</EnableAspireTesting>
</PropertyGroup>
<!-- references to the code to test -->
</Project>
Playwright를 사용하여 테스트
Playwright를 사용하면 최신 웹앱에 대해 신뢰할 수 있는 엔드투엔드 테스트를 수행할 수 있습니다. 자세한 내용은 공식 Playwright 문서를 참조하세요.
참고 항목
이 기능은 MSTest.Sdk 3.4.0에서 사용할 수 있습니다.
속성 EnablePlaywright
를 true
로 설정하면, Playwright
및 MSTest
를 사용하여 테스트하는 데 필요한 모든 종속성 및 기본 using
지시문을 가져올 수 있습니다.
<Project Sdk="MSTest.Sdk/3.4.0">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<EnablePlaywright>true</EnablePlaywright>
</PropertyGroup>
<!-- references to the code to test -->
</Project>
MSTest SDK로 마이그레이션
MSTest SDK로 마이그레이션하는 데 필요한 다음 단계를 고려합니다.
프로젝트 업데이트
기존 MSTest 테스트 프로젝트를 MSTest SDK로 마이그레이션할 때 테스트 프로젝트 상단의 Sdk="Microsoft.NET.Sdk"
항목을 Sdk="MSTest.Sdk"
로 바꾸는 것부터 시작합니다.
- Sdk="Microsoft.NET.Sdk"
+ Sdk="MSTest.Sdk"
global.json
에 해당 버전을 추가합니다.
{
"msbuild-sdks": {
"MSTest.Sdk": "3.3.1"
}
}
그런 다음 프로젝트 간소화를 시작할 수 있습니다.
다음 기본 속성을 제거합니다.
- <EnableMSTestRunner>true</EnableMSTestRunner>
- <OutputType>Exe</OutputType>
- <IsPackable>false</IsPackable>
- <IsTestProject>true</IsTestProject>
다음 기본 패키지 참조를 제거합니다.
- <PackageReference Include="MSTest"
- <PackageReference Include="MSTest.TestFramework"
- <PackageReference Include="MSTest.TestAdapter"
- <PackageReference Include="MSTest.Analyzers"
- <PackageReference Include="Microsoft.NET.Test.Sdk"
마지막으로, 사용 중인 확장 프로필에 따라 일부 Microsoft.Testing.Extensions.*
패키지를 제거할 수도 있습니다.
CI 업데이트
프로젝트를 업데이트한 후 MSTest runner
(기본값)를 사용하고 테스트를 실행하는 데 dotnet test
를 사용하는 경우 CI 구성을 업데이트해야 합니다. 자세한 내용과 필요한 모든 변경 내용을 이해하려면 dotnet 테스트 통합을 참조하세요.
다음은 Azure DevOps에서 DotNetCoreCLI
작업을 사용할 때의 업데이트 예입니다.
\- task: DotNetCoreCLI@2
inputs:
command: 'test'
projects: '**/**.sln'
- arguments: '--configuration Release'
+ arguments: '--configuration Release -p:TestingPlatformCommandLineArguments="--report-trx --results-directory $(Agent.TempDirectory) --coverage"'
참고 항목
.NET