Omówienie narzędzia MSTest

MSTest, Microsoft Testing Framework, to w pełni obsługiwana platforma testowa typu open source i międzyplatformowa dla aplikacji platformy .NET. Umożliwia pisanie i wykonywanie testów oraz oferuje zestawy testów z możliwością integracji z eksploratorami testów Visual Studio i Visual Studio Code, .NET CLI oraz wieloma potokami CI.

Narzędzie MSTest jest hostowane w usłudze GitHub i współpracuje ze wszystkimi obsługiwanymi obiektami docelowymi platformy .NET.

Kluczowe funkcje

Narzędzie MSTest zapewnia kompleksowe możliwości testowania:

  • Testowanie oparte na danych: Uruchamianie testów z wykorzystaniem wielu danych wejściowych przy użyciu DataRow, DynamicData oraz zewnętrznych źródeł danych.
  • Zarządzanie cyklem życia testu: konfigurowanie i czyszczenie na poziomach zestawów, klas i testów.
  • Wykonywanie równoległe: równoczesne uruchamianie testów w celu skrócenia czasu wykonywania.
  • Organizacja testowa: kategoryzowanie, określanie priorytetów i filtrowanie testów przy użyciu atrybutów metadanych.
  • Analizatory kodu: wykrywanie typowych problemów i wymuszanie najlepszych rozwiązań w czasie kompilacji.
  • Asercji: kompleksowe metody asercji do sprawdzania poprawności wyników.

Obsługiwane platformy

Platforma MSTest obsługuje szeroką gamę platform .NET i platform docelowych. W poniższej tabeli przedstawiono podsumowanie obsługi platformy i szczególnych zagadnień:

Platforma Platformy docelowe Obsługa wątków Atrybuty specjalne Notatki
.NET .NET 8+ Pełna paralelizacja Wszystkie atrybuty Zalecane w przypadku nowych projektów
.NET Framework 4.6.2+ Pełna paralelizacja Wszystkie atrybuty Pełna obsługa funkcji
Platforma UWP UAP 10, .NET 9+ z funkcją UAP wątek interfejsu użytkownika UITestMethod Użyj narzędzia VSTest. Nowoczesne .NET platformy UWP wymaga <UseUwp>true</UseUwp>; zobacz przykład platformy UWP
WinUI 3 .NET 8+ wątek interfejsu użytkownika UITestMethod Wymaga Zestaw SDK do aplikacji systemu Windows; zobacz Testowanie aplikacji WinUI 3 przy użyciu bibliotek MSTest i MTP
Natywna AOT .NET 8+ Pełna paralelizacja Większość atrybutów Ograniczony zestaw funkcji; zobacz Przykład natywnej usługi AOT
Przeglądarka WebAssembly .NET 10+ host niestandardowy Jednowątkowy Limited Microsoft niestandardowe. Obsługa hosta Testing.Platform rozpoczyna się od biblioteki MSTest 4.4

Uwagi dotyczące konkretnych platform

Testowanie platformy UWP

Testy platformy UWP są uruchamiane w kontenerze aplikacji platformy UWP i wymagają wątku interfejsu użytkownika dla wielu operacji:

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

Użyj narzędzia VSTest dla klasycznej platformy UWP i nowoczesnej platformy uwP .NET, ponieważ obie są uruchamiane w aplikacji AppContainer. Aby zapoznać się z nowoczesną konfiguracją platformy UWP .NET, zobacz przykład BlankUwpNet9App.

Testowanie winUI 3

Testy WinUI 3 wymagają również dostępu do wątku UI do testowania komponentów wizualnych.

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

Aby skonfigurować rozpakowane lub spakowane testy WinUI 3 oparte na pełnym zaufaniu, zobacz Testowanie aplikacji WinUI 3 przy użyciu narzędzi MSTest i MTP.

Począwszy od msTest 4.4, Microsoft. Aplikacja Testing.Platform obsługuje również rozpakowane aplikacje testowe WinUI. Program VSTest nie obsługuje tego scenariusza. Aby uzyskać szczegółowe informacje o konfiguracji, zobacz rozpakowany przykład WinUI.

Natywne AOT

Natywna kompilacja AOT jest obsługiwana z pewnymi ograniczeniami ze względu na ograniczone możliwości odbicia. Użyj generatorów źródeł, jeśli to możliwe, i przetestuj scenariusze AOT za pomocą przykładu NativeAotRunner.

Przeglądarka WebAssembly

Począwszy od msTest 4.4, niestandardowy host webAssembly przeglądarki .NET 10 może wywołać AddMSTest w celu uruchomienia testów z przywoływanego zestawu MSTest. W projekcie hosta ustaw EnableMSTestRunnertrue wartość i GenerateTestingPlatformEntryPoint na , aby false niestandardowy host był właścicielem punktu wejścia aplikacji. Zachowaj bibliotekę MSTest i Microsoft. Wersje pakietów Testing.Platform są wyrównane.

W środowisku uruchomieniowym WebAssembly jednowątkowy test MSTest nie może przerwać testów limitu czasu, a opcje uruchamiania debugera nie są obsługiwane. Pełny host można znaleźć w przykładzie BrowserPlayground.

Obsługa wątkowania STA

W przypadku scenariuszy współpracy międzyoperacyjnej Windows COM, narzędzie MSTest udostępnia atrybuty STATestClass i STATestMethod do uruchamiania testów w jednowątkowym apartamencie. Aby uzyskać szczegółowe informacje na temat wątkowania STA, w tym obsługi kontynuacji asynchronicznych w programie UseSTASynchronizationContext, zobacz Atrybuty wątkowe.

Uruchamiacze testów

Narzędzie MSTest obsługuje dwie platformy wykonywania testów:

  • Microsoft.Testing.Platform (MTP): nowoczesna, zalecana platforma testowa o lepszej wydajności i rozszerzalności.
  • VSTest: oryginalna i domyślna platforma testowa dla platformy .NET.

W przypadku nowych projektów zalecamy używanie protokołu MTP z zestawem MSTest.Sdk.

Zasady pomocy technicznej MSTest

Od wersji 3.0.0, narzędzie MSTest ściśle przestrzega wersjonowania semantycznego.

Zespół MSTest obsługuje tylko najnowszą wydaną wersję i zdecydowanie zachęca użytkowników do zawsze aktualizowania do najnowszej wersji, aby korzystać z ulepszeń i poprawek zabezpieczeń. Wersje zapoznawcza nie są obsługiwane przez firmę Microsoft, ale są oferowane do testowania publicznego przed ostateczną wersją.

Historia wersji

MSTest przeszedł znaczącą ewolucję w wersjach głównych.

  • MSTest v1: oryginalna struktura testowania programu Visual Studio
  • MSTest v2: pierwsza wersja typu open source z obsługą wielu platform
  • MSTest w wersji 3: nowoczesne ponowne zapisywanie z ulepszoną architekturą i funkcjami
  • MSTest v4: bieżąca wersja z rozszerzonymi funkcjami

Note

Program MSTest 4.4 jest rozwijany od sierpnia 2026 r. Funkcje oznaczone jako wprowadzone w programie MSTest 4.4 wymagają kompilacji w wersji zapoznawczej do momentu wydania wersji 4.4.0.

Aby uzyskać szczegółowe informacje na temat wszystkich wydań, zobacz dziennik zmian MSTest.

Jeśli uaktualniasz starszą wersję, zapoznaj się z przewodnikami migracji:

Zmiany przełomowe

Zespół MSTest dokładnie sprawdza i minimalizuje zmiany powodujące niekompatybilność. Kiedy konieczne są zmiany łamiące kompatybilność, zespół używa anonsów w serwisie GitHub i etykiet zmian powodujących niezgodność w problemach, aby wcześnie poinformować społeczność, dając użytkownikom czas na przekazanie opinii i zgłaszanie obaw przed opublikowaniem zmian.

Dalsze kroki