Porovnání Microsoft.Testing.Platform a VSTest
Microsoft.Testing.Platform
je jednoduchá a přenosná alternativa K 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 spuštění testů, které vstest.console.exe
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 – přehled: Spouštění a ladění testů.
Obory názvů a balíčky NuGet
Pokud se chcete seznámit s Microsoft.Testing.Platform
nástrojem VSTest, je užitečné pochopit obory názvů a balíčky NuGet, které jsou používány jednotlivými balíčky.
Obory názvů VSTest
VSTest je kolekce testovacích nástrojů, které se také označují jako testovací platforma. Zdrojový kód VSTest je opensourcový a dostupný v úložišti Microsoft/vstest Na GitHubu. Kód používá Microsoft.TestPlatform.*
obor názvů.
VSTest je rozšiřitelný a běžné typy jsou umístěny v balíčku NuGet Microsoft.TestPlatform.ObjectModel .
Obory názvů Microsoft.Testing.Platform
Microsoft.Testing.Platform je založen na balíčku NuGet Microsoft.Testing.Platform a dalších knihovnách v Microsoft.Testing.*
oboru názvů. Stejně jako VSTest Microsoft.Testing.Platform
je opensourcový a má úložiště GitHub microsoft/testfx .
Komunikační protokol (Preview)
Poznámka:
Průzkumník testů sady Visual Studio podporuje protokol Microsoft.Testing.Platform ve verzích Preview od verze 17.10 dále. Pokud testy spustíte nebo ladíte pomocí starších verzí sady Visual Studio, Průzkumník testů tyto testy spustí vstest.console.exe
a starý protokol.
Microsoft.Testing.Platform používá protokol založený na protokolu 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í založený na protokolu JSON-RPC.
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>
.
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 platformy |
---|---|
--test-adapter-path <ADAPTER_PATH> |
Nepodporováno |
--blame |
Nepodporováno |
--blame-crash |
--crashdump vyžaduje rozšíření pro výpis pádu systému |
--blame-crash-dump-type <DUMP_TYPE> |
--crashdump-type vyžaduje rozšíření pro výpis pádu 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ěrateli 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.