Porovnání Microsoft.Testing.Platform a VSTest
Microsoft.Testing.Platform
je jednoduchá a přenosná alternativa VSTest pro spouštění testů na příkazovém řádku, v kanálech kontinuální integrace (CI), v Průzkumníku testů sady Visual Studio a v editoru Visual Studio Code. V tomto článku se seznámíte s klíčovými rozdíly mezi msTest runnerem a VSTestem.
Rozdíly v provádění testů
Testy se provádějí různými způsoby v závislosti na spouštěči.
Spouštění testů VSTest
VSTest se dodává se sadou Visual Studio, sadou .NET SDK a jako samostatný nástroj v balíčku NuGet Microsoft.TestPlatform. VSTest používá spustitelný soubor spouštěče ke spouštění testů s názvem vstest.console.exe
, který lze použít přímo nebo prostřednictvím dotnet test
.
Spouštění testů Microsoft.Testing.Platform
Microsoft.Testing.Platform je vložený přímo do testovacího projektu a nepřidává žádné další spustitelné soubory. Při spuštění spustitelného souboru projektu se testy spustí. Další informace o spouštění testů Microsoft.Testing.Platform naleznete v tématu Microsoft.Testing.Platform overview: Spuštění a ladění testů.
Obory názvů a balíčky NuGet
Pokud se chcete seznámit s Microsoft.Testing.Platform
a VSTestem, je užitečné pochopit obory názvů a balíčky NuGet, které jsou používány jednotlivými balíčky.
Jmenné prostory VSTest
VSTest je sada testovacích nástrojů, které jsou také známé jako platforma pro testování. Zdrojový kód VSTest je opensourcový a dostupný v úložišti microsoft/vstest GitHubu. Kód používá obor názvů Microsoft.TestPlatform.*
.
VSTest je rozšiřitelný a běžné typy jsou umístěny v Microsoft.TestPlatform.ObjectModel balíčku NuGet.
Jmenné prostory Microsoft.Testing.Platform
Microsoft.Testing.Platform je založen na balíčku NuGet Microsoft.Testing.Platform a dalších knihovnách v oboru názvů Microsoft.Testing.*
. Stejně jako VSTest je Microsoft.Testing.Platform
opensourcový a má úložiště Microsoft/testfx GitHubu.
Komunikační protokol
Poznámka
Průzkumník testů sady Visual Studio podporuje protokol Microsoft.Testing.Platform od verze 17.12 dále. Pokud testy spustíte nebo ladíte pomocí starších verzí sady Visual Studio, Průzkumník testů k provedení těchto testů použije vstest.console.exe
a starý protokol.
Microsoft.Testing.Platform používá protokol založený na JSON-RPC ke komunikaci mezi sadou Visual Studio a procesem test runneru. Protokol je zdokumentovaný v úložišti MSTest GitHub.
VSTest také používá komunikační protokol založený na formátu JSON, ale není JSON-RPC založený.
Zakázání nového protokolu
Chcete-li zakázat použití nového protokolu v Průzkumníku testů, můžete upravit projekt a přidat následující vlastnost: <DisableTestingPlatformServerCapability>true</DisableTestingPlatformServerCapability>
.
V sadě Visual Studio můžete také přejít na možnosti Funkcí ve verzi Preview a zrušit výběr možnosti Použít režim serveru testovací platformy.
Spustitelné soubory
VSTest dodává více spustitelných souborů, zejména vstest.console.exe
, testhost.exe
a datacollector.exe
. MSTest se ale vloží přímo do testovacího projektu a nepřidá žádné jiné spustitelné soubory. Spustitelný soubor, na který se testovací projekt zkompiluje, se používá k hostování všech testovacích nástrojů a provádění všech úkolů potřebných ke spuštění testů.
Migrace z VSTestu
Kromě kroků specifických pro testovací architekturu musíte aktualizovat testovací infrastrukturu tak, aby vyhovovala Microsoft.Testing.Platform
.
dotnet test
Možnosti příkazového řádku dotnet test
jsou rozdělené do 2 kategorií: sestavte související argumenty a testujte související argumenty.
Argumenty související s sestavením se předávají příkazu dotnet build
a proto není nutné aktualizovat pro novou platformu. Níže jsou uvedeny následující argumenty související s sestavením:
-a|--arch <ARCHITECTURE>
--artifacts-path <ARTIFACTS_DIR>
-c|--configuration <CONFIGURATION>
-f|--framework <FRAMEWORK>
-e|--environment <NAME="VALUE">
--interactive
--no-build
--nologo
--no-restore
-o|--output <OUTPUT_DIRECTORY>
--os <OS>
-r|--runtime <RUNTIME_IDENTIFIER>
-v|--verbosity <LEVEL>
Argumenty související s testem jsou specifické pro VSTest, takže je potřeba je transformovat tak, aby odpovídaly nové platformě. Následující tabulka ukazuje mapování mezi argumenty VSTest a novou platformou:
Argument VSTest | Nový argument pro platformu |
---|---|
--test-adapter-path <ADAPTER_PATH> |
Nepodporováno |
--blame |
Nepodporováno |
--blame-crash |
--crashdump vyžaduje rozšíření výpisu systému při havárii |
--blame-crash-dump-type <DUMP_TYPE> |
--crashdump-type vyžaduje rozšíření výpisu stavu systému |
--blame-crash-collect-always |
Nepodporováno |
--blame-hang |
--hangdump vyžaduje rozšíření hang dump |
--blame-hang-dump-type <DUMP_TYPE> |
--hangdump-type vyžaduje rozšíření hang dump |
--blame-hang-timeout <TIMESPAN> |
--hangdump-timeout vyžaduje rozšíření hang dump |
--collect <DATA_COLLECTOR_NAME> |
Závisí na sběrači dat. |
-d\|--diag <LOG_FILE> |
--diagnostic |
--filter <EXPRESSION> |
Závisí na vybrané testovací rozhraní. |
-l\|--logger <LOGGER> |
Závisí na protokolovacím nástroji. |
--results-directory <RESULTS_DIR> |
--results-directory <RESULTS_DIR> |
-s\|--settings <SETTINGS_FILE> |
Závisí na vybrané testovací rozhraní. |
-t\|--list-tests |
--list-tests |
-- <RunSettings arguments> |
Nepodporováno |
Důležitý
Před zadáním jakýchkoli argumentů Microsoft.Testing.Platform
je nutné přidat --
, abyste oddělili dotnet test
argumenty od nových argumentů platformy. Například dotnet test --no-build -- --list-tests
.
vstest.console.exe
Pokud používáte vstest.console.exe
přímo, doporučujeme ho nahradit příkazem dotnet test
.
Průzkumník testů
Pokud používáte Visual Studio nebo Visual Studio Code Test Explorer, možná budete muset povolit podporu nové testovací platformy.
Visual Studio
Visual Studio Test Explorer podporuje novou testovací platformu počínaje verzí 17.14. Pokud používáte starší verzi, možná budete muset sadu Visual Studio aktualizovat na nejnovější verzi.
Visual Studio Code
Průzkumník testů editoru Visual Studio Code podporuje novou testovací platformu začínající verzí X.
Azure DevOps
Při použití úloh Azure DevOps možná budete muset aktualizovat kanál tak, aby používal novou testovací platformu.
Úloha VSTest
Pokud používáte úlohu VSTest v Azure DevOps, můžete ji nahradit úlohou .NET Core.
Úloha .NET Core
Pokud používáte úlohu .NET Core, nejsou potřeba žádné změny.