Share via


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>

그런 다음 다음과 같이 MSTest.Sdk 버전을 지정하는 global.json 파일이 있습니다.

{
    "msbuild-sdks": {
        "MSTest.Sdk": "3.3.1"
    }
}

자세한 내용은 MSBuild 프로젝트 SDK 사용을 참조하세요.

프로젝트를 build하면 프로젝트에서 설정한 표준 NuGet 워크플로를 사용하여 필요한 모든 구성 요소가 복원되고 설치됩니다.

테스트를 빌드하고 실행하는 데 다른 어떤 것도 필요하지 않으며 "클래식" MSTest 프로젝트에서 사용하는 것과 동일한 도구(예: dotnet test 또는 Visual Studio)를 사용할 수 있습니다.

실행기 선택

기본적으로 MSTest SDK는 MSTest 실행기에 따라 다르지만 <UseVSTest>true</UseVSTest> 속성을 추가하면 쉽게 VSTest로 전환할 수 있습니다.

MSTest 실행기 확장

NuGet 패키지 확장 집합을 통해 MSTest runner 환경을 사용자 지정할 수 있습니다. 이 환경을 간소화하고 개선하기 위해 MSTest SDK에는 두 가지 기능이 도입되었습니다.

MSTest 실행기 프로필

프로필 개념을 사용하면 테스트 프로젝트에 적용될 기본 구성 및 확장 집합을 선택할 수 있습니다.

다음 세 가지 프로필 중 하나와 함께 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>

이 페이지에는 사용 가능한 모든 확장이 나열되어 있습니다.

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에서 사용할 수 있습니다.

속성 EnableAspireTestingtrue로 설정하여 AspireMSTest 테스트에 필요한 모든 종속성 및 기본 사용을 가져올 수 있습니다.

<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에서 사용할 수 있습니다.

속성 EnablePlaywrighttrue로 설정하여 PlaywrightMSTest 테스트에 필요한 모든 종속성 및 기본 사용을 가져올 수 있습니다.

<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 테스트 프로젝트를 MSTest SDK로 마이그레이션할 때 테스트 프로젝트 상단의 Sdk="Microsoft.NET.Sdk" 항목을 Sdk="MSTest.Sdk/3.3.1"로 바꾸는 것부터 시작합니다.

Sdk="MSTest.Sdk/3.3.1"

- 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.* 패키지를 제거할 수도 있습니다.