Sdílet prostřednictvím


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.exelze 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.exea 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.