Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
MSTest, Microsoft Testing Framework, je plně podporovaná opensourcová a multiplatformní testovací architektura pro aplikace .NET. Umožňuje psát a spouštět testy a poskytuje sady testů s integrací do Průzkumníků testů sady Visual Studio a Visual Studio Code, rozhraní příkazového řádku .NET a mnoha kanálů CI.
MSTest je hostovaný na GitHubu a funguje se všemi podporovanými cíli .NET.
Klíčové funkce
MSTest poskytuje komplexní možnosti testování:
-
Testování řízené daty: Spouštění testů s více vstupy pomocí
DataRow,DynamicDataCombinatorialData, a externích zdrojů dat. - Správa životního cyklu testů: Nastavení a vyčištění na úrovních sestavení, tříd a testů
- Paralelní spuštění: Souběžné spouštění testů, aby se zkrátila doba provádění.
- Testovací organizace: Kategorizace, stanovení priorit a filtrování testů pomocí atributů metadat.
- Analyzátory kódu: Zjistí běžné problémy a vynucuje osvědčené postupy v době kompilace.
- Asertace: Komplexní asertační metody pro ověřování výsledků.
Podporované platformy
MSTest podporuje širokou škálu platforem .NET a cílových architektur. Následující tabulka shrnuje podporu platformy a zvláštní aspekty:
| Platforma | Cílové rámce | Podpora vláken | Speciální atributy | Poznámky |
|---|---|---|---|---|
| .NET | .NET 8 a novější | Úplná paralelizace | Všechny atributy | Doporučeno pro nové projekty |
| .NET Framework | 4.6.2+ | Úplná paralelizace | Všechny atributy | Úplná podpora funkcí |
| UPW | UAP 10, .NET 10+ s nástroji UPW | vlákno uživatelského rozhraní | UITestMethod |
MSTest 4.5 a MTP 2.5 podporují klasické a moderní UPW prostřednictvím modelu aplikace MSTest.Sdk sidecar |
| WinUI 3 | .NET 8 a novější | vlákno uživatelského rozhraní | UITestMethod |
MTP podporuje zabalené, nerozbalené hostitele aplikací a hostitele AppContainer; viz Testování aplikací UWP a WinUI 3 pomocí MSTestu a MTP |
| automatizace desktopového uživatelského rozhraní Windows | cíl .NET 8 a více Windows | STA | STATestClass |
MSTest 4.5 Preview umožňuje spustit rozbalené aplikace Win32, model Windows Forms a WPF (Windows Presentation Foundation) a zpřístupnit okno prostřednictvím Windows model UI Automation |
| Nativní AOT | .NET 8 a novější | Úplná paralelizace | Většina atributů | Omezená sada funkcí; viz Nativní AOT ukázka |
| Prohlížeč WebAssembly | Vlastní hostitel pro .NET 10+ | Jednovláknové | Omezené | Podpora spouštění MTP začíná s MSTest 4.4 |
| WASI WebAssembly | Vlastní hostitel pro .NET 10+ | Jednovláknové | Omezené | Podpora spouštění MTP začíná s MSTest 4.4 |
Aspekty pro konkrétní platformu
Testování UWP
Testy UPW se spouští v kontejneru aplikace UPW a vyžadují vlákno uživatelského rozhraní pro mnoho operací:
[TestClass]
public class UwpTests
{
[UITestMethod]
public void TestUwpControl()
{
// Test runs on UI thread
var button = new Button();
Assert.IsNotNull(button);
}
}
Počínaje verzí MSTest 4.5 a MTP 2.5 použijte MSTest.Sdk ke spouštění klasických testů UPW a moderních .NET testů UPW prostřednictvím MTP. Komponenta sidecar s úplným oprávněním zaregistruje a aktivuje balíček, udělí přesnému SID balíčku aplikace oprávnění ke komunikaci MTP a zkopíruje výsledné artefakty z úložiště balíčku.
Moderní UPW vyžaduje .NET 10 UseUwpa sadu nástrojů pro sestavení Visual Studio UPW. Klasický UWP si zachovává svou stávající uap10.0 strukturu projektu. Kompletní konfigurace najdete v moderní ukázce UPW a klasické ukázce UPW.
Testování WinUI 3
Testy WinUI 3 také vyžadují přístup k vláknu uživatelského rozhraní pro testovací vizuální komponenty:
[TestClass]
public class WinUITests
{
[UITestMethod]
public void TestWinUIControl()
{
// Test runs on UI thread
var window = new MainWindow();
Assert.IsNotNull(window);
}
}
MTP podporuje balené aplikace s plnou důvěrou, nebalené aplikace a testovací aplikace WinUI 3 nakonfigurované pro AppContainer. MSTest.Sdk spouští nebalené aplikace přímo a k registraci a aktivaci balených aplikací používá doprovodnou komponentu modelu aplikace.
Podpora AppContainer vyžaduje MSTest 4.5 a MTP 2.5 nebo novější. VSTest nepodporuje rozbalené WinUI 3. Podrobnosti o nastavení najdete v tématu Testování aplikací UPW a WinUI 3 pomocí MSTest a MTP.
automatizace desktopového uživatelského rozhraní Windows
Balíček MSTest.Windows.UIAutomation integruje správu životního cyklu MSTest s Windows model UI Automation pro rozbalené aplikace Win32, model Windows Forms a WPF (Windows Presentation Foundation). Informace o nastavení, omezeních a ApplicationTestWindowTest základních třídách najdete v tématu Testování Windows desktopových aplikací pomocí msTest model UI Automation.
Nativní AOT
Nativní kompilace AOT se podporuje s určitými omezeními kvůli omezeným možnostem reflexe. Pokud je to možné, použijte generátory zdrojů a otestujte scénáře AOT pomocí ukázky NativeAotRunner.
Prohlížeč a WASI WebAssembly
MSTest 4.4 podporuje vlastní .NET 10 prohlížečů nebo hostitelů WASI WebAssembly. Chcete-li spustit testy z odkazovaného sestavení MSTest, zavolejte AddMSTest. V projektu hostitele nastavte EnableMSTestRunner na true a GenerateTestingPlatformEntryPoint na false. Zachovejte verze balíčků MSTest a MTP zarovnané.
V jednovláknovém běhovém prostředí WebAssembly nemůže MSTest násilně přerušit test, u kterého vypršel časový limit. Čekání na ladicí program není podporováno v prohlížeči ani ve WASI a prohlížeč nepodporuje možnosti spuštění ladicího programu.
MTP může streamovat data TRX a předávat artefakty testovacích souborů a souborů relací prostřednictvím virtuálního souborového systému WebAssembly hostitele a kanálu artefaktů. Publikování v Azure DevOps funguje pouze tehdy, když hostitel poskytuje podporovaný přístup přes HTTP a požadované ověřování pro kanál pipeline. Tyto funkce neudělují neomezený hostitelský souborový systém ani síťový přístup.
Kompletního hostitele prohlížeče najdete v ukázce BrowserPlayground.
Podpora vláken STA
Pro scénáře spolupráce modelu COM systému Windows poskytuje MSTest atributy STATestClass a STATestMethod pro spouštění testů v jednovláknovém apartmánu. Podrobnosti o vláknech STA, včetně podpory asynchronního pokračování s UseSTASynchronizationContext, viz Atributy vláken.
Spouštěče testů
MSTest podporuje dvě platformy pro spouštění testů:
- Microsoft.Testing.Platform (MTP): Moderní doporučená testovací platforma s vylepšeným výkonem a rozšiřitelností.
- VSTest: Původní a výchozí testovací platforma pro .NET.
Pro nové projekty doporučujeme používat MTP s MSTest.Sdk.
Zásady podpory MSTest
Od verze 3.0.0 msTest striktně dodržuje sémantickou správu verzí.
Tým MSTest podporuje pouze nejnovější vydanou verzi a důrazně vyzývá uživatele, aby vždy aktualizovali na nejnovější verzi, aby mohli těžit z vylepšení a oprav zabezpečení. Microsoft verze Preview nepodporuje, ale nabízí se pro veřejné testování před finální verzí.
Historie verzí
MSTest prošel významným vývojem napříč hlavními verzemi:
- MSTest v1: Původní testovací architektura sady Visual Studio
- MSTest v2: První opensourcová verze s podporou pro různé platformy
- MSTest v3: Moderní přepis s vylepšenou architekturou a funkcemi
- MSTest v4: Aktuální verze s vylepšenými funkcemi
Note
MSTest 4.5 je ve vývoji od října 2026. Funkce označené jako představené v MSTest 4.5 vyžadují build Preview, dokud nebude vydána verze 4.5.0.
Podrobnosti o všech verzích najdete v protokolu změn MSTest.
Pokud upgradujete ze starší verze, projděte si průvodce migrací:
Zásadní změny
Tým MSTest pečlivě zkontroluje a minimalizuje zásadní změny. V případě potřeby zásadních změn tým používá oznámení GitHubu a popisky zásadních změn k včasnému informování komunity a poskytuje uživatelům čas na poskytnutí zpětné vazby a vyvolání obav před vydáním změn.