Přehled testovacích platforem pro .NET

V .NET jsou testovací architektura a testovací platforma různé komponenty, které spolupracují na zjišťování a spouštění testů.

  • Testovací architektura definuje testovací model, pro který píšete, například MSTest, NUnit, xUnit.net nebo TUnit.
  • Testovací platforma spouští testy, integruje se s integrovanými vývojovými prostředími a rozhraním příkazového řádku a poskytuje sdílené body rozšíření.

Můžete si vybrat mezi dvěma testovacími platformami:

  • VSTest
  • Microsoft. Testing.Platform (MTP)

Návod

Pro nejjednodušší nastavení zvolte jednu platformu pro úložiště a nakonfigurujte testovací projekty, CI a nástroje konzistentně pro danou platformu. Nekombinujte projekty testů založené na VSTest a MTP .NET ve stejném řešení nebo spusťte konfiguraci, protože tento scénář není podporovaný. Pokud také spouštíte testy, které nejsou .NET, které jsou závislé na VSTestu (například C++ nebo JavaScript), spusťte tyto testy v samostatných konfiguracích od testů založených na MTP .NET.

Jak zvolit platformu

K rychlému výběru použijte následující scénáře.

Případ použití Zvolit Proč
Potřebujete scénáře provádění testů pro Native AOT nebo oříznutí. MTP MTP podporuje tyto moderní scénáře nasazení, zatímco VSTest ne.
Vytváříte zabalené projekty testů WinUI nebo UPW. VSTest MTP v současné době nepodporuje tyto typy projektů.
Potřebujete kombinovat testy .NET a adaptéry testů, které nejsou .NET (například adaptéry JavaScriptu nebo C++). VSTest VSTest podporuje scénáře se smíšenými jazyky, zatímco MTP je .NET specifické.
Chcete, aby se testovací projekty chovaly jako běžné spustitelné soubory (dotnet run, přímé spuštění spustitelného souboru, dotnet watch, a F5 toky spouštění projektu). MTP MTP je spustitelný jako první, takže testovací aplikace běží jako standardní .NET aplikace v místních pracovních postupech a pracovních postupech CI.
Spoléháte na dlouhotrvající integrace napříč stávajícími nástroji. VSTest VSTest má nejdelší záznam sledování kompatibility napříč stávajícími produkty, úlohami a kanály. Podpora MTP roste v ekosystému, ale některé integrace mohou zaostávat za VSTestem.
Dáváte přednost striktnímu výchozímu nastavení a explicitnímu chování. MTP MTP upřednostňuje deterministické spouštění s lehkým modelem rozšíření na vyžádání a registrací během sestavení. Může například selhat, když se nespustí žádné testy, sníží proměnlivost závislá na prostředí a umožní zakázat jednotlivá rozšíření pro každé prostředí.
Dáváte přednost měkčím a široce zpětně kompatibilním výchozím nastavením. VSTest Obě platformy se starají o zpětnou kompatibilitu. VSTest upřednostňuje výchozí hodnoty orientované na kompatibilitu pro různé existující sady nástrojů, zatímco MTP poskytuje zpětnou kompatibilitu v rámci vlastního modelu rozšíření.
Jste blokován problémem nebo chováním specifickým pro VSTest ve vašem aktuálním pracovním postupu. MTP (protokol přenosu médií) V mnoha scénářích není stejný pracovní proces při přesunu na MTP ovlivněn kvůli rozdílům v modelu času běhu a architektuře rozšíření.

Pokud váš konkrétní případ použití není uvedený, jsou obě platformy platnými volbami.

Podpora integrace a nástrojové vybavení

Oblast integrace VSTest MTP (Protokol pro přenos médií)
Integrace integrovaného vývojového prostředí (IDE) Vyspělá integrace napříč Visual Studio a dalšími nástroji, které závisí na protokolu a adaptérech VSTest. Podporováno ve scénářích Visual Studio a Visual Studio Code s průběžnou integrací v částech ekosystému.
CI a externí nástroje Široká podpora napříč dlouhodobými nástroji a úkoly Microsoftu a jiných společností než Microsoft. V Azure DevOps můžete použít úlohu VSTest (VSTest@3, vstest.console) nebo úlohu .NET (DotNetCoreCLI@2, dotnet test). Funguje v pracovních postupech CI a moderních .NET, ale některé integrace třetích stran mohou být za VSTestem stále opožděné. V Azure DevOps použijte úlohu .NET (DotNetCoreCLI@2, dotnet test).
dotnet test Chování Výchozí režim VSTest Argumenty a chování VSTest se aplikují. Nativní režim MTP je k dispozici v sadě .NET 10 SDK a novějších verzích.

Úplné podrobnosti o dotnet test režimech a argumentech naleznete v tématu Testování pomocí dotnet test.

Začněte z testovací architektury

Pokud zvolíte VSTest

Pokud zvolíte MTP

Další kroky