Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 użyciem wielu danych wejściowych przy użyciu
DataRow,CombinatorialData,DynamicDataoraz 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 10+ za pomocą narzędzi platformy UWP | wątek interfejsu użytkownika | UITestMethod |
MSTest 4.5 i MTP 2.5 obsługują klasyczne i nowoczesne aplikacje UWP za pomocą pakietu towarzyszącego app-model MSTest.Sdk |
| WinUI 3 | .NET 8+ | wątek interfejsu użytkownika | UITestMethod |
MTP obsługuje hosty pakietowe, niepakietowe i AppContainer; zobacz Testowanie aplikacji UWP i WinUI 3 za pomocą MSTest i MTP |
| automatyzacja interfejsu użytkownika pulpitu Windows | Docelowy system Windows dla platformy .NET 8+ | STA | STATestClass |
Program MSTest 4.5 w wersji zapoznawczej może uruchamiać rozpakowane aplikacje Win32, Windows Forms i WPF oraz uwidaczniać okno za pośrednictwem Windows automatyzacja interfejsu użytkownika |
| 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 | Obsługa wykonywania MTP jest dostępna od wersji MSTest 4.4 |
| WASI WebAssembly | .NET 10+ host niestandardowy | Jednowątkowy | Limited | Obsługa wykonywania MTP jest dostępna od wersji 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);
}
}
Począwszy od MSTest 4.5 i MTP 2.5, użyj pakietu MSTest.Sdk do uruchamiania klasycznych testów UWP i nowoczesnych testów .NET UWP przy użyciu MTP. Przyczepka o pełnym zaufaniu rejestruje i aktywuje pakiet, autoryzuje dokładny identyfikator SID pakietu aplikacji na potrzeby komunikacji MTP i kopiuje artefakty wynikowe z magazynu pakietów.
Nowoczesny UWP wymaga platformy .NET 10, UseUwp, i łańcucha narzędzi do kompilacji UWP programu Visual Studio. Klasyczny UWP zachowuje swoją dotychczasową uap10.0 strukturę projektu. Pełne konfiguracje można znaleźć w przykładzie nowoczesnej platformy UWP i klasycznym przykładzie platformy UWP.
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);
}
}
MTP obsługuje pakietowane aplikacje testowe WinUI 3 z pełnym zaufaniem, niepakietowane aplikacje testowe WinUI 3 oraz aplikacje testowe WinUI 3 skonfigurowane do użycia z AppContainer. MSTest.Sdk uruchamia aplikacje bez pakietu bezpośrednio i używa pomocniczego składnika modelu aplikacji do rejestrowania i aktywacji aplikacji pakietowanych.
Obsługa aplikacji AppContainer wymaga bibliotek MSTest 4.5 i MTP 2.5 lub nowszej. Program VSTest nie obsługuje rozpakowanego pakietu WinUI 3. Aby uzyskać szczegółowe informacje na temat konfiguracji, zobacz Testowanie aplikacji platformy UWP i WinUI 3 przy użyciu bibliotek MSTest i MTP.
automatyzacja interfejsu użytkownika pulpitu Windows
Pakiet MSTest.Windows.UIAutomation integruje zarządzanie cyklem życia MSTest z Windows automatyzacja interfejsu użytkownika dla rozpakowanych aplikacji Win32, Windows Forms i WPF. Informacje na temat konfiguracji, ograniczeń oraz klas bazowych ApplicationTest i WindowTest można znaleźć w artykule Testowanie klasycznych aplikacji systemu Windows za pomocą automatyzacji interfejsu użytkownika MSTest.
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 i zestaw WEBAssembly WASI
Platforma MSTest 4.4 obsługuje niestandardowe hosty .NET 10 lub WASI WebAssembly. Aby uruchomić testy z przywołytowanego zestawu MSTest, wywołaj metodę AddMSTest. W projekcie hosta ustaw EnableMSTestRunner na true, a GenerateTestingPlatformEntryPoint na false. Utrzymuj zgodność wersji pakietów MSTest i MTP.
W jednowątkowym środowisku uruchomieniowym WebAssembly MSTest nie może wymusić przerwania testu, który przekroczył limit czasu. Tryb oczekiwania debugera nie jest obsługiwany w przeglądarce ani w WASI, a przeglądarka nie obsługuje opcji uruchomienia debugera.
MTP może strumieniować dane TRX oraz zgłaszać artefakty plików testowych i sesji za pośrednictwem wirtualnego systemu plików WebAssembly hosta i kanału artefaktów. Azure DevOps publikowanie działa tylko wtedy, gdy host zapewnia obsługiwany dostęp HTTP i wymagane uwierzytelnianie potoku. Te funkcje nie udzielają nieograniczonego dostępu do systemu plików hosta ani dostępu sieciowego.
Aby zobaczyć kompletny host przeglądarki, zobacz przykład 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.5 jest rozwijany od października 2026 r. Funkcje oznaczone jako wprowadzone w programie MSTest 4.5 wymagają kompilacji w wersji zapoznawczej do momentu wydania wersji 4.5.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.