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.exe
i 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ą:
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.