Microsoft Testing Platform (MTP) - přehled

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:

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 AppDomain nebo AssemblyLoadContext, 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 nefunda­mentá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

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 ProjectCapability je vyžadována testovacími průzkumníky Visual Studio a Visual Studio Code.
  • Automatické generování vstupního bodu ( metodaMain).
  • 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.

Viz také