Přehled MSTestu

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í:

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.

Další kroky