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 Vyžaduje nastavení <UseUwp>true</UseUwp>; viz ukázka UPW
WinUI 3 .NET 8 a novější vlákno uživatelského rozhraní UITestMethod Vyžaduje sadu Windows App SDK; viz ukázka WinUI
Nativní AOT .NET 8 a novější Úplná paralelizace Většina atributů Omezená sada funkcí; viz Nativní AOT ukázka

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

Informace o nastavení UWP viz ukázku 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);
    }
}

Informace o nastavení WinUI najdete v ukázce BlankWinUINet9App a v ukázce MSTestRunnerWinUI.

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.

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

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