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.
Microsoft. Testing.Platform (MTP) je jednoduchá a přenosná alternativa VSTest pro spouštění testů ve všech kontextech, včetně kanálů kontinuální integrace (CI), rozhraní příkazového řádku, Visual Studio Průzkumníka testů a Průzkumníka testů VS Code. MTP je přímo vložený do vašich testovacích projektů a nejsou potřebné žádné další závislosti aplikací, jako například vstest.console nebo dotnet test, ke spuštění vašich testů.
Spropitné
Pokud potřebujete pomoc s výběrem mezi VSTest a MTP, začněte přehledem testovacích platforem.
Tento článek použijte, když jste se už rozhodli použít MTP a chcete porozumět jeho modelu, možnostem a provoznímu chování.
MTP je open source. Kód Microsoft.Testing.Platform najdete v úložišti microsoft/testfx GitHub.
Začněte tady
Na základě toho, co potřebujete, použijte následující cestu:
- Spouštění a ladění testů z rozhraní příkazového řádku, integrovaného vývojového prostředí nebo CI: Spouštění a ladění testů
- Principy chování platformy v rozhraní příkazového řádku: Testování s využitím
dotnet test - Najděte přepínače platformy a CLI rozšíření na jednom místě: Referenční příručka možností MTP CLI
- Konfigurace spouštěčů architektury: Spouštění testů s podporou MSTest nebo MTP v NUnit (NUnit runner)
- Migrace existujícího nastavení VSTest: Migrace z VSTest na MTP
- Přidání diagnostiky, pokrytí a generování sestav: funkce MTP
- Vytvoření vlastního rozšíření: architektura MTP, rozšířitelné body a služby
Pilíře MTP
Tato nová testovací platforma je založená na prostředí týmu .NET Developer Experience Testing a zaměřuje se na řešení problémů, ke kterým došlo od vydání .NET Core v roce 2016. I když existuje vysoká úroveň kompatibility mezi Frameworkem .NET a .NET Core/.NET, některé klíčové funkce, jako je systém pluginů a nové možnosti podob kompilací .NET, ztížily vývoj nebo plnou podporu nové funkce běhového prostředí v rámci současné architektury platformy VSTest.
Hlavní hlavní faktory pro vývoj nové testovací platformy jsou podrobně popsány v následujících příkladech:
determinismus: Zajištění, aby spuštění stejných testů v různých kontextech (místní, CI) vytvořilo stejný výsledek. Nový modul runtime nespoléhá na reflexi ani na žádnou jinou funkci modulu runtime dynamického .NET ke koordinaci testovacího spuštění.
Transparentnost běhu: Testovací běh neinterferuje s kódem testovací architektury, nevytváří izolované kontexty jako
AppDomainneboAssemblyLoadContext, a nepoužívá reflekci ani vlastní překladače sestavení.Registrace rozšíření v době kompilace: Rozšíření, jako jsou testovací architektury a rozšíření mimo proces, se registrují během kompilace, aby se zajistila determinismus a usnadnila detekce nekonzistence.
Žádné závislosti: Jádrem platformy je jedno sestavení .NET
Microsoft.Testing.Platform.dll, které neobsahuje jiné závislosti než podporované runtime.Hostable: Testovací modul runtime je možné hostovat v libovolné aplikaci .NET. Zatímco konzolová aplikace se běžně používá ke spouštění testů, můžete vytvořit testovací aplikaci v libovolném typu .NET aplikace. To vám umožní spouštět testy v rámci speciálních kontextů, jako jsou zařízení nebo prohlížeče, kde můžou existovat omezení.
Podpora všech formátů .NET: Podpora současných a budoucích formátů .NET, včetně Native AOT.
Výkonnost: Nalezení správné rovnováhy mezi funkcemi a body rozšíření, aby nedocházelo k nafouknutí modulu runtime nefundamentálním kódem. Nová testovací platforma je navržená tak, aby koordinovala testovací běh, než aby poskytovala podrobnosti o tom, jak implementovat testy.
Dostatečně rozšiřitelný: Nová platforma je postavena na bodech rozšiřitelnosti, což umožňuje maximální přizpůsobení běhu času. Umožňuje nakonfigurovat hostitele testovacího procesu, sledovat proces testování a využívat informace z testovací architektury v rámci procesu testovacího hostitele.
nasazení jednoho modulu: Funkce hostability umožňuje jeden model nasazení modulu, kde lze použít jeden výsledek kompilace k podpoře všech bodů rozšiřitelnosti, a to jak mimo proces, tak i bez nutnosti dodávat různé spustitelné moduly.
Podporované testovací architektury
- MSTest. V MSTest se podpora MTP provádí prostřednictvím msTest runneru.
- NUnit. U NUnit se podpora MTP provádí prostřednictvím NUnit runneru.
- xUnit.net. Další informace najdete v tématu Microsoft Testing Platform (xUnit.net v3) a Microsoft Testing Platform (xUnit.net v2) z dokumentace k xUnit.net.
- TUnit: kompletně sestavený nad MTP, další informace naleznete v dokumentaci TUnit.
Podporované cílové frameworky
MTP podporuje .NET (.NET 8 a novější), .NET Framework (verze 4.6.2 a novější) a cílí na NETStandard 2.0 pro zajištění maximální kompatibility s jinými moduly runtime.
Spouštění a ladění testů
Podrobné pokyny ke spouštění a ladění testovacích projektů MTP z rozhraní příkazového řádku, Visual Studio, kódu Visual Studio a pipelines CI najdete v tématu Spouštět a ladit testy.
Možnosti
Úplný seznam možností příkazového řádku platformy a rozšíření najdete v referenčních informacích k možnostem rozhraní příkazového řádku MTP.
Integrace nástroje MSBuild
Balíček NuGet Microsoft. Testing.Platform.MSBuild poskytuje různé integrace pro MTP s msBuildem:
- Podpora pro
dotnet test. Další informace naleznete v tématu Testování pomocí testu dotnet. - Podpora
ProjectCapabilityje vyžadována testovacími průzkumníkyVisual StudioaVisual Studio Code. - Automatické generování vstupního bodu ( metoda
Main). - Automatické generování konfiguračního souboru.
- Automatická detekce a registrace nainstalovaných balíčků rozšíření
Pokud je tento balíček aktivní (výchozí hodnota pro msTest, NUnit a xUnit runners), instalace balíčku NuGet rozšíření je vše, co je potřeba – rozšíření se automaticky zaregistrují beze změn kódu. Pokud zakážete automaticky vygenerovaný vstupní bod nastavením <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>, musíte rozšíření zaregistrovat ručně ve své Main metodě. Každá stránka rozšíření uvádí svůj postup ruční registrace.
Poznámka
Tato integrace funguje tranzitivním způsobem (project, který odkazuje na jiný project odkazující na tento balíček se bude chovat, jako by odkazoval na balíček), a lze jej zakázat prostřednictvím vlastnosti IsTestingPlatformApplication MSBuild.