Udostępnij za pośrednictwem


Porównanie Microsoft.Testing.Platform i VSTest

Microsoft.Testing.Platform jest uproszczoną i przenośną alternatywą dla vsTest do uruchamiania testów w wierszu polecenia, w potokach ciągłej integracji (CI) w Eksploratorze testów programu Visual Studio i w programie Visual Studio Code. W tym artykule poznasz kluczowe różnice między modułem uruchamiającym testy MSTest i narzędziem VSTest.

Różnice w wykonywaniu testów

Testy są wykonywane na różne sposoby w zależności od modułu uruchamiającego.

Wykonywanie testów VSTest

Program VSTest jest dostarczany z programem Visual Studio, zestawem SDK platformy .NET i jako autonomicznym narzędziem w pakiecie Microsoft.TestPlatform NuGet. Program VSTest używa pliku wykonywalnego uruchamiającego do uruchamiania testów o nazwie vstest.console.exe, który może być używany bezpośrednio lub za pośrednictwem dotnet test.

Wykonywanie testów Microsoft.Testing.Platform

Microsoft.Testing.Platform jest osadzony bezpośrednio w projekcie testowym i nie dostarcza żadnych dodatkowych plików wykonywalnych. Po uruchomieniu pliku wykonywalnego projektu testy są uruchamiane. Aby uzyskać więcej informacji na temat uruchamiania testów Microsoft.Testing.Platform, zobacz Microsoft.Testing.Platform overview: Run and debug tests(Omówienie uruchamiania i debugowania testów).

Przestrzenie nazw i pakiety NuGet

Aby zapoznać się z Microsoft.Testing.Platform i narzędziem VSTest, warto zrozumieć przestrzenie nazw i pakiety NuGet, które są używane przez każdy z nich.

Przestrzenie nazw VSTest

VSTest to kolekcja narzędzi do testowania, które są również nazywane platformą testową . Kod źródłowy VSTest jest typu open source i dostępny w repozytorium microsoft/vstest GitHub. Kod używa przestrzeni nazw Microsoft.TestPlatform.*.

Program VSTest jest rozszerzalny, a typy znajdują się w pakiecie Microsoft.TestPlatform.ObjectModel NuGet.

Przestrzenie nazw Microsoft.Testing.Platform

Microsoft.Testing.Platform jest oparty na pakiecie NuGet Microsoft.Testing.Platform i innych bibliotekach w przestrzeni nazw Microsoft.Testing.*. Podobnie jak vsTest, Microsoft.Testing.Platform jest open source i ma microsoft/testfx repozytorium GitHub.

Protokół komunikacyjny

Notatka

Eksplorator testów programu Visual Studio obsługuje protokół Microsoft.Testing.Platform od wersji 17.12. Jeśli uruchamiasz/debugujesz testy przy użyciu wcześniejszych wersji programu Visual Studio, Eksplorator testów użyje vstest.console.exe i starego protokołu do uruchamiania tych testów.

Microsoft.Testing.Platform używa protokołu opartego na JSON-RPC do komunikacji między programem Visual Studio a procesem modułu uruchamiającego testy. Protokół jest udokumentowany w repozytorium MSTest GitHub.

Program VSTest używa również protokołu komunikacyjnego opartego na formacie JSON, ale nie jest oparty na JSON-RPC.

Wyłączanie nowego protokołu

Aby wyłączyć korzystanie z nowego protokołu w Eksploratorze testów, możesz edytować projekt, aby dodać następującą właściwość: <DisableTestingPlatformServerCapability>true</DisableTestingPlatformServerCapability>.

Możesz również przejść do opcji Funkcje w wersji zapoznawczej w programie Visual Studio i usunąć zaznaczenie opcji "Użyj trybu serwera platformy testowej".

Pliki wykonywalne

Program VSTest dostarcza wiele plików wykonywalnych, w szczególności vstest.console.exe, testhost.exei datacollector.exe. Jednak narzędzie MSTest jest osadzone bezpośrednio w projekcie testowym i nie dostarcza żadnych innych plików wykonywalnych. Plik wykonywalny kompilowany w projekcie testowym służy do hostowania wszystkich narzędzi do testowania i wykonywania wszystkich zadań wymaganych do uruchamiania testów.

Migrowanie z programu VSTest

Oprócz kroków specyficznych dla platformy testowej należy zaktualizować infrastrukturę testową, aby dostosować ją do Microsoft.Testing.Platform.

dotnet test

Opcje wiersza polecenia dotnet test są podzielone na 2 kategorie: argumenty związane z kompilacją i związane z testami.

Argumenty powiązane z kompilacją są przekazywane do polecenia dotnet build i w związku z czym nie trzeba ich aktualizować do nowej platformy. Poniżej przedstawiono powiązane argumenty kompilacji:

  • -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 powiązane z testem są specyficzne dla narzędzia VSTest i dlatego należy je przekształcić w celu dopasowania do nowej platformy. W poniższej tabeli przedstawiono mapowanie między argumentami VSTest a nową platformą:

Argument VSTest Nowy argument dla platformy
--test-adapter-path <ADAPTER_PATH> Nieobsługiwane
--blame Niewspierane
--blame-crash --crashdump wymaga rozszerzenia zrzutu awaryjnego
--blame-crash-dump-type <DUMP_TYPE> --crashdump-type wymaga rozszerzenia do zrzutu awaryjnego
--blame-crash-collect-always Nie obsługiwane
--blame-hang --hangdump wymaga rozszerzenia zrzutu zawieszania
--blame-hang-dump-type <DUMP_TYPE> --hangdump-type wymaga rozszerzenia Hang dump
--blame-hang-timeout <TIMESPAN> --hangdump-timeout wymaga rozszerzenia Hang dump
--collect <DATA_COLLECTOR_NAME> Zależy od modułu zbierającego dane
-d\|--diag <LOG_FILE> --diagnostic
--filter <EXPRESSION> Zależy od wybranej platformy testowej
-l\|--logger <LOGGER> Zależy od rejestratora
--results-directory <RESULTS_DIR> --results-directory <RESULTS_DIR>
-s\|--settings <SETTINGS_FILE> Zależy od wybranej platformy testowej
-t\|--list-tests --list-tests
-- <RunSettings arguments> Nieobsługiwane

Ważny

Przed określeniem jakichkolwiek argumentów Microsoft.Testing.Platform należy dodać --, aby oddzielić argumenty dotnet test od nowych argumentów platformy. Na przykład dotnet test --no-build -- --list-tests.

vstest.console.exe

Jeśli używasz vstest.console.exe bezpośrednio, zalecamy zastąpienie go poleceniem dotnet test.

Eksplorator testów

W przypadku korzystania z programu Visual Studio lub Eksploratora testów programu Visual Studio Code może być konieczne włączenie obsługi nowej platformy testowej.

Visual Studio

Eksplorator testów programu Visual Studio obsługuje nową platformę testową, począwszy od wersji 17.14. Jeśli używasz starszej wersji, może być konieczne zaktualizowanie programu Visual Studio do najnowszej wersji.

Visual Studio Code

Eksplorator testów programu Visual Studio Code obsługuje nową platformę testową rozpoczynającą się od wersji X.

Azure DevOps

W przypadku korzystania z zadań usługi Azure DevOps może być konieczne zaktualizowanie potoku w celu korzystania z nowej platformy testowej.

VsTest, zadanie

Jeśli używasz zadania VSTest w usłudze Azure DevOps, możesz zastąpić je zadaniem .NET Core.

Zadanie platformy .NET Core

Jeśli używasz zadania platformy .NET Core , nie są potrzebne żadne zmiany.