MSTest SDK 개요
MSTest.Sdk는 MSTest 앱을 빌드하기 위한 MSBuild 프로젝트 SDK입니다. 이 SDK 없이 MSTest 앱을 빌드할 수 있지만 MSTest SDK는 다음과 같습니다.
- MSTest를 사용하는 테스트에 최고 수준의 환경을 제공하도록 조정되었습니다.
- 대부분의 사용자에게 권장되는 대상입니다.
- 다른 사용자를 위해 구성하기 쉽습니다.
MSTest SDK는 MSTest 실행기를 사용하여 테스트를 발견하고 실행합니다.
프로젝트의 MSTest.Sdk
노드의 Sdk
특성을 업데이트하기만 하면 프로젝트에서 Project
를 사용하도록 설정할 수 있습니다.
<Project Sdk="MSTest.Sdk/3.6.3">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
<!-- references to the code to test -->
</Project>
참고
/3.6.3
예제로 제공되며 모든 최신 버전으로 바꿀 수 있습니다.
버전 처리를 간소화하려면 global.json 파일을 사용하여 솔루션 수준에서 SDK 버전을 설정하는 것이 좋습니다. 예를 들어 프로젝트 파일은 다음과 같습니다.
<Project Sdk="MSTest.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
<!-- references to the code to test -->
</Project>
그런 다음, 다음과 같이 MSTest.Sdk
파일에서 버전을 지정합니다.
{
"msbuild-sdks": {
"MSTest.Sdk": "3.6.3"
}
}
자세한 내용은 MSBuild 프로젝트 SDK 사용을 참조하세요.
프로젝트를 build
하면 프로젝트에서 설정한 표준 NuGet 워크플로를 사용하여 필요한 모든 구성 요소가 복원되고 설치됩니다.
테스트를 빌드하고 실행하는 데는 다른 어떤 것도 필요하지 않으며, 기존 MSTest 프로젝트에서 사용되는 것과 동일한 도구(예: dotnet test
또는 Visual Studio)를 사용할 수 있습니다.
중요함
MSTest.Sdk
로 전환하여 MSTest runner를 dotnet test와 함께 사용하도록 옵트인합니다. 이 경우 CI 및 로컬 CLI 호출을 수정해야 하는데 .runsettings의 사용 가능한 항목에도 영향을 줍니다.
MSTest.Sdk
를 사용하고 대신 실행기를 전환하여 이전 통합 및 도구를 계속 유지할 수 있습니다.
주자 선택
기본적으로 MSTest SDK는 MSTest runner를 사용하지만 속성을 추가하여 <UseVSTest>true</UseVSTest>
로 전환할 수 있습니다.
MSTest 실행기 확장
MSTest runner
경험을 NuGet 패키지 확장 세트를 통해 사용자 정의할 수 있습니다. 이 환경을 간소화하고 개선하기 위해 MSTest SDK에 다음 두 기능이 도입되었습니다.
MSTest runner 프로필
프로필 개념을 사용하면 테스트 프로젝트에 적용될 기본 구성 및 확장 집합을 선택할 수 있습니다.
다음 세 가지 프로필 중 하나와 함께 TestingExtensionsProfile
속성을 사용하여 프로필을 설정할 수 있습니다.
None
- 사용하도록 설정된 확장이 없습니다.Default
- 이 버전의 MSTest.SDK에 권장되는 확장을 사용하도록 설정합니다. 속성이 명시적으로 설정되지 않은 경우 이는 기본값입니다.다음 확장을 사용하도록 설정합니다.
AllMicrosoft
- Microsoft에서 제공한 모든 확장(제한적인 라이선스가 있는 확장 포함)을 사용하도록 설정합니다.다음 확장을 사용하도록 설정합니다.
다음은 None
프로필을 사용한 전체 예입니다.
<Project Sdk="MSTest.Sdk/3.6.3">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<TestingExtensionsProfile>None</TestingExtensionsProfile>
</PropertyGroup>
<!-- references to the code to test -->
</Project>
확장/프로필 | 없음 | 기본값 | AllMicrosoft |
---|---|---|---|
코드 커버리지 | ✔️ | ✔️ | |
크래시 덤프 | ✔️ | ||
가짜 | ✔️ (MSTest.Sdk 3.7.0 이상) | ||
정지 덤프 | ✔️ | ||
핫 리로드 | ✔️ | ||
다시 시도 | ✔️ | ||
Trx | ✔️ | ✔️ |
확장 사용 또는 사용 안 함
확장은 Enable[NugetPackageNameWithoutDots]
패턴을 사용하여 MSBuild 속성으로 사용 및 사용하지 않도록 설정할 수 있습니다.
예를 들어, 크래시 덤프 확장(NuGet 패키지 Microsoft.Testing.Extensions.CrashDump)을 사용하도록 설정하려면 EnableMicrosoftTestingExtensionsCrashDump
로 설정된 다음 true
속성을 사용할 수 있습니다.
<Project Sdk="MSTest.Sdk/3.6.3">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<EnableMicrosoftTestingExtensionsCrashDump>true</EnableMicrosoftTestingExtensionsCrashDump>
</PropertyGroup>
<!-- references to the code to test -->
</Project>
사용 가능한 모든 확장 목록은 Microsoft.Testing.Platform 확장을 참조하세요.
경고
각 확장별로 라이선스 조건이 다를 수 있으므로 검토하는 것이 중요합니다.
사용 및 사용하지 않도록 설정된 확장은 선택한 확장 프로필에서 제공하는 확장과 결합됩니다.
이 속성 패턴은 암시적 Default
프로필 위에 추가 확장을 사용하도록 설정하는 데 사용할 수 있습니다(이전 CrashDumpExtension 예제에서 볼 수 있음).
선택한 프로필에서 오는 확장을 사용하지 않도록 설정할 수도 있습니다. 예를 들어, MS Code Coverage
를 설정하여 <EnableMicrosoftTestingExtensionsCodeCoverage>false</EnableMicrosoftTestingExtensionsCodeCoverage>
확장을 사용하지 않도록 설정합니다.
<Project Sdk="MSTest.Sdk/3.6.3">
<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
로 설정하면 using
및 Aspire
를 사용하여 테스트하는 데 필요한 모든 종속성 및 기본 MSTest
지시문을 가져올 수 있습니다.
<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
로 설정하면, using
및 Playwright
를 사용하여 테스트하는 데 필요한 모든 종속성 및 기본 MSTest
지시문을 가져올 수 있습니다.
<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.6.3"
}
}
그런 다음 프로젝트 간소화를 시작할 수 있습니다.
기본 속성을 제거합니다.
- <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"'
알려진 제한 사항
NuGet에서 제공하는 MSBuild SDK(MSTest.Sdk 포함)는 버전 업데이트와 관련하여 제한된 도구 지원을 제공합니다. 즉, NuGet 패키지를 관리하기 위한 일반적인 NuGet 업데이트 및 Visual Studio UI가 예상대로 작동하지 않습니다. 자세한 내용은 이 문제를 참조하세요. NuGet#13127.
참고
이 제한은 MSTest SDK가 아니라 NuGet에서 제공하는 MSBuild SDK에만 해당됩니다.
Dependabot은
참고 항목
.NET