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 9 a novější s UAP vlákno uživatelského rozhraní UITestMethod Použijte VSTest. Moderní .NET UPW vyžaduje <UseUwp>true</UseUwp>; viz ukázka UPW
WinUI 3 .NET 8 a novější vlákno uživatelského rozhraní UITestMethod Vyžaduje Windows App SDK; viz test aplikací WinUI 3 s MSTest a MTP.
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á verzí MSTest 4.4 Preview
WASI WebAssembly .NET 10 nebo více vlastních hostitelů Jednovláknové Omezené Podpora spouštění MTP začíná verzí MSTest 4.4 Preview

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);
    }
}

Použijte VSTest pro klasický UPW a moderní .NET UPW, protože oba běží v AppContainer. Moderní projekt .NET UWP najdete v ukázce BlankUwpNet9App.

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);
    }
}

Pokud chcete nastavit nebalené nebo zabalené plně důvěryhodné testy WinUI 3, viz Testování aplikací WinUI 3 pomocí MSTest a MTP.

Počínaje MSTest 4.4 Microsoft. Testing.Platform také podporuje rozbalené testovací aplikace WinUI. VSTest tento scénář nepodporuje. Podrobnosti o nastavení najdete v rozbalené ukázce WinUI.

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 Preview podporuje vlastní .NET 10 prohlížeč nebo hostitele 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.4 je ve vývoji od srpna 2026. Funkce označené jako představené v MSTest 4.4 vyžadují build Preview, dokud nebude vydána verze 4.4.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