MSTest 개요

MSTest, Microsoft Testing Framework는 .NET 애플리케이션에 대해 완전히 지원되는 오픈 소스 및 플랫폼 간 테스트 프레임워크입니다. 테스트를 작성하고 실행할 수 있으며 Visual Studio 및 Visual Studio Code 테스트 탐색기, .NET CLI 및 많은 CI 파이프라인에 통합된 테스트 제품군을 제공합니다.

MSTest는 GitHub 에서 호스트되며 지원되는 모든 .NET 대상에서 작동합니다.

주요 기능

MSTest는 다음과 같은 포괄적인 테스트 기능을 제공합니다.

  • 데이터 기반 테스트: , CombinatorialDataDynamicData및 외부 데이터 원본을 사용하여 DataRow여러 입력으로 테스트를 실행합니다.
  • 테스트 수명 주기 관리: 어셈블리, 클래스 및 테스트 수준에서 설정 및 정리
  • 병렬 실행: 동시에 테스트를 실행하여 실행 시간을 줄입니다.
  • 테스트 조직: 메타데이터 특성을 사용하여 테스트를 분류, 우선 순위 지정 및 필터링합니다.
  • 코드 분석기: 일반적인 문제를 검색하고 컴파일 시간에 모범 사례를 적용합니다.
  • 어설션: 결과의 유효성을 검사하기 위한 포괄적인 어설션 메서드입니다.

지원되는 플랫폼

MSTest는 다양한 .NET 플랫폼 및 대상 프레임워크를 지원합니다. 다음 표에는 플랫폼 지원 및 특별 고려 사항이 요약되어 있습니다.

Platform 대상 프레임워크 스레딩 지원 특수 특성 비고
.NET .NET 8 이상 전체 병렬 처리 모든 특성 새 프로젝트에 권장
.NET Framework 4.6.2+ 전체 병렬 처리 모든 특성 전체 기능 지원
UWP UWP 도구를 사용하는 UAP 10, .NET 10 이상 UI 스레드 UITestMethod MSTest 4.5 및 MTP 2.5는 MSTest.Sdk 앱 모델 사이드카를 통해 클래식 및 최신 UWP를 지원합니다.
WinUI 3 .NET 8 이상 UI 스레드 UITestMethod MTP는 패키지, 패키지되지 않은 및 AppContainer 호스트를 지원합니다. MSTest 및 MTP를 사용하여 UWP 및 WinUI 3 앱 테스트 참조
Windows 데스크톱 UI 자동화 .NET 8 이상 Windows 대상 STA STATestClass MSTest 4.5 미리 보기는 패키지되지 않은 Win32, Windows Forms 및 WPF 앱을 시작하고 Windows UI 자동화 통해 창을 노출할 수 있습니다.
네이티브 AOT .NET 8 이상 전체 병렬 처리 대부분의 특성 제한된 기능 집합; 네이티브 AOT 샘플 참조
Browser WebAssembly .NET 10개 이상의 사용자 지정 호스트 단일 스레드 Limited MTP 실행 지원은 MSTest 4.4로 시작됩니다.
WASI WebAssembly .NET 10개 이상의 사용자 지정 호스트 단일 스레드 Limited MTP 실행 지원은 MSTest 4.4로 시작됩니다.

플랫폼별 고려 사항

UWP 테스트

UWP 테스트는 UWP 앱 컨테이너에서 실행되며 많은 작업에 UI 스레드가 필요합니다.

[TestClass]
public class UwpTests
{
    [UITestMethod]
    public void TestUwpControl()
    {
        // Test runs on UI thread
        var button = new Button();
        Assert.IsNotNull(button);
    }
}

MSTest 4.5 및 MTP 2.5부터 MSTest.Sdk를 사용하여 MTP를 통해 클래식 UWP 및 최신 .NET UWP 테스트를 실행합니다. 완전 신뢰 권한의 사이드카가 패키지를 등록하고 활성화하며, 앱의 정확한 패키지 SID에 MTP 통신 권한을 부여하고, 패키지 저장소에서 결과 아티팩트를 복사합니다.

최신 UWP에는 .NET 10 UseUwp및 Visual Studio UWP 빌드 도구 체인이 필요합니다. 클래식 UWP는 기존 uap10.0 프로젝트 모양을 유지합니다. 전체 구성은 최신 UWP 샘플 및 클래식 UWP 샘플을 참조하세요.

WinUI 3 테스트

또한 WinUI 3 테스트는 시각적 구성 요소를 테스트하기 위해 UI 스레드 액세스가 필요합니다.

[TestClass]
public class WinUITests
{
    [UITestMethod]
    public void TestWinUIControl()
    {
        // Test runs on UI thread
        var window = new MainWindow();
        Assert.IsNotNull(window);
    }
}

MTP는 패키지된 완전 신뢰 앱, 패키지되지 않은 앱 및 AppContainer로 구성된 WinUI 3 테스트 앱을 지원합니다. MSTest.Sdk는 패키지되지 않은 앱을 직접 시작하고 앱 모델 사이드카를 사용하여 패키지된 앱을 등록하고 활성화합니다.

AppContainer를 지원하려면 MSTest 4.5 및 MTP 2.5 이상이 필요합니다. VSTest는 패키지되지 않은 WinUI 3을 지원하지 않습니다. 설치 세부 정보는 MSTest 및 MTP를 사용하여 UWP 및 WinUI 3 앱 테스트를 참조하세요.

Windows 데스크톱 UI 자동화

MSTest.Windows.UIAutomation 패키지는 패키지되지 않은 Win32, Windows Forms 및 WPF 애플리케이션용 Windows UI 자동화과 MSTest 수명 주기 관리를 통합합니다. 설정, 제한 사항 및 WindowTest 기본 클래스는 ApplicationTestMSTest UI 자동화 사용하여 데스크톱 앱 Windows 테스트를 참조하세요.

네이티브 AOT

네이티브 AOT 컴파일은 리플렉션 기능 감소로 인해 몇 가지 제한 사항으로 지원됩니다. 가능한 경우 원본 생성기를 사용하고 NativeAotRunner 샘플을 사용하여 AOT 시나리오를 테스트합니다.

브라우저 및 WASI WebAssembly

MSTest 4.4는 사용자 지정 .NET 10 브라우저 또는 WASI WebAssembly 호스트를 지원합니다. 참조된 MSTest 어셈블리에서 테스트를 실행하려면 .를 호출 AddMSTest합니다. 호스트 프로젝트에서 true을 GenerateTestingPlatformEntryPoint(으)로, false를 EnableMSTestRunner(으)로 설정합니다. MSTest 및 MTP 패키지 버전을 정렬된 상태로 유지합니다.

단일 스레드 WebAssembly 런타임에서 MSTest는 시간 초과 테스트를 강제로 중단할 수 없습니다. 디버거 대기는 브라우저 또는 WASI에서 지원되지 않으며 브라우저는 디버거 시작 옵션을 지원하지 않습니다.

MTP는 호스트의 WebAssembly 가상 파일 시스템 및 아티팩트 채널을 통해 TRX 데이터를 스트리밍하고 테스트 및 세션 파일 아티팩트를 보고할 수 있습니다. Azure DevOps 게시는 호스트가 지원되는 HTTP 액세스 및 필요한 파이프라인 인증을 제공하는 경우에만 작동합니다. 이러한 기능은 무제한 호스트 파일 시스템 또는 네트워크 액세스 권한을 부여하지 않습니다.

전체 브라우저 호스트는 BrowserPlayground 샘플을 참조하세요.

STA 스레딩 지원

Windows COM interop 시나리오의 경우 MSTest는 STATestClass 및 STATestMethod 특성을 제공하여 단일 스레드 아파트에서 테스트를 실행할 수 있습니다. 비동기 연속 지원을 UseSTASynchronizationContext포함하여 STA 스레딩에 대한 자세한 내용은 스레딩 특성을 참조하세요.

테스트 러너

MSTest는 두 가지 테스트 실행 플랫폼을 지원합니다.

  • MTP(Microsoft.Testing.Platform): 향상된 성능과 확장성을 갖춘 최신 권장 테스트 플랫폼입니다.
  • VSTest: .NET의 원래 및 기본 테스트 플랫폼입니다.

새 프로젝트의 경우 MSTest.Sdk와 함께 MTP를 사용하는 것이 좋습니다.

MSTest 지원 정책

v3.0.0부터 MSTest는 의미 체계 버전 관리만 엄격하게 따릅니다.

MSTest 팀은 최신 릴리스 버전만 지원하며 사용자가 항상 최신 버전으로 업데이트하여 향상된 기능과 보안 패치를 활용할 것을 강력히 권장합니다. 미리 보기 릴리스는 Microsoft에서 지원되지 않지만 최종 릴리스에 앞서 공개 테스트를 위해 제공됩니다.

버전 기록

MSTest는 주 버전에서 상당한 발전을 거쳤습니다.

  • MSTest v1: 원래 Visual Studio 테스트 프레임워크
  • MSTest v2: 플랫폼 간 지원을 사용하여 첫 번째 오픈 소스 릴리스
  • MSTest v3: 향상된 아키텍처 및 기능으로 최신 재작성
  • MSTest v4: 향상된 기능이 있는 현재 버전

메모

MSTest 4.5는 2026년 10월 현재 개발 중입니다. MSTest 4.5에 도입된 것으로 표시된 기능은 버전 4.5.0이 릴리스될 때까지 미리 보기 빌드가 필요합니다.

모든 릴리스에 대한 자세한 내용은 MSTest 변경 로그를 참조하세요.

이전 버전에서 업그레이드하는 경우 마이그레이션 가이드를 참조하세요.

파괴적 변경

MSTest 팀은 호환성을 깨뜨리는 변경 사항을 신중하게 검토하고 최소화합니다. 호환성이 손상되는 변경이 필요한 경우 팀은 문제에 대한 GitHub 알림 및 호환성이 손상되는 변경 레이블 을 사용하여 커뮤니티에 조기에 알리고 사용자에게 피드백을 제공하고 변경 내용이 릴리스되기 전에 문제를 제기할 시간을 줍니다.

다음 단계