Jämförelse mellan Microsoft.Testing.Platform och VSTest
Microsoft.Testing.Platform
är ett enkelt och portabelt alternativ till VSTest för att köra tester på kommandoraden, i CI-pipelines (continuous integration), i Visual Studio Test Explorer och i Visual Studio Code. I den här artikeln får du lära dig de viktigaste skillnaderna mellan MSTest-löparen och VSTest.
Skillnader i testkörning
Tester utförs på olika sätt beroende på löparen.
Köra VSTest-tester
VSTest levereras med Visual Studio, .NET SDK och som ett fristående verktyg i NuGet-paketet Microsoft.TestPlatform . VSTest använder en körbar löpare för att köra tester som kallas vstest.console.exe
, som kan användas direkt eller via dotnet test
.
Köra Microsoft.Testing.Platform-tester
Microsoft.Testing.Platform är inbäddat direkt i testprojektet och skickar inga extra körbara filer. När du kör projektet körbart körs testerna. Mer information om hur du kör Microsoft.Testing.Platform-tester finns i Översikt över Microsoft.Testing.Platform: Kör och felsöka tester.
Namnområden och NuGet-paket
För att bekanta dig med Microsoft.Testing.Platform
och VSTest är det bra att förstå de namnområden och NuGet-paket som används av var och en.
VSTest-namnområden
VSTest är en samling testverktyg som även kallas testplattformen. VSTest-källkoden är öppen källkod och finns på GitHub-lagringsplatsen microsoft/vstest . Koden använder Microsoft.TestPlatform.*
namnområdet.
VSTest är utökningsbart och vanliga typer placeras i Microsoft.TestPlatform.ObjectModel NuGet-paketet.
Microsoft.Testing.Platform-namnområden
Microsoft.Testing.Platform baseras på NuGet-paketet Microsoft.Testing.Platform och andra bibliotek i Microsoft.Testing.*
namnområdet. Precis som VSTest Microsoft.Testing.Platform
är den öppen källkod och har en Microsoft/testfx GitHub-lagringsplats.
Kommunikationsprotokoll (förhandsversion)
Kommentar
Visual Studio Test Explorer stöder protokollet Microsoft.Testing.Platform i förhandsversionerna sedan 17.10 och senare. Om du kör/felsöker dina tester med hjälp av tidigare versioner av Visual Studio använder vstest.console.exe
Test Explorer och det gamla protokollet för att köra dessa tester.
Microsoft.Testing.Platform använder ett JSON-RPC-baserat protokoll för att kommunicera mellan Visual Studio och testkörprocessen. Protokollet dokumenteras i MSTest GitHub-lagringsplatsen.
VSTest använder också ett JSON-baserat kommunikationsprotokoll, men det är inte JSON-RPC-baserat.
Inaktivera det nya protokollet
Om du vill inaktivera användningen av det nya protokollet i Test Explorer kan du redigera projektet för att lägga till följande egenskap: <DisableTestingPlatformServerCapability>true</DisableTestingPlatformServerCapability>
.
Körbara filer
VSTest levererar flera körbara filer, särskilt vstest.console.exe
, testhost.exe
och datacollector.exe
. MSTest är dock inbäddat direkt i testprojektet och skickar inga andra körbara filer. Det körbara testprojektet som kompileras till används som värd för alla testverktyg och utför alla uppgifter som krävs för att köra tester.
Migrera från VSTest
Förutom de steg som är specifika för ditt testramverk måste du uppdatera testinfrastrukturen för att anpassa den till Microsoft.Testing.Platform
.
dotnet test
Kommandoradsalternativen för dotnet test
är indelade i 2 kategorier: byggrelaterade argument och testrelaterade.
De byggrelaterade argumenten skickas till kommandot dotnet build
och behöver därför inte uppdateras för den nya plattformen. Build-relaterade argument visas nedan:
-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>
Testrelaterade argument är VSTest-specifika och måste därför transformeras för att matcha den nya plattformen. I följande tabell visas mappningen mellan VSTest-argumenten och den nya plattformen:
VSTest-argument | Nytt plattformsargument |
---|---|
--test-adapter-path <ADAPTER_PATH> |
Stöds inte |
--blame |
Stöds inte |
--blame-crash |
--crashdump kräver kraschdumptillägg |
--blame-crash-dump-type <DUMP_TYPE> |
--crashdump-type kräver kraschdumptillägg |
--blame-crash-collect-always |
Stöds inte |
--blame-hang |
--hangdump kräver Hang dump extension |
--blame-hang-dump-type <DUMP_TYPE> |
--hangdump-type kräver Hang dump extension |
--blame-hang-timeout <TIMESPAN> |
--hangdump-timeout kräver Hang dump extension |
--collect <DATA_COLLECTOR_NAME> |
Beror på datainsamlaren |
-d\|--diag <LOG_FILE> |
--diagnostic |
--filter <EXPRESSION> |
Beror på det valda testramverket |
-l\|--logger <LOGGER> |
Beror på loggaren |
--results-directory <RESULTS_DIR> |
--results-directory <RESULTS_DIR> |
-s\|--settings <SETTINGS_FILE> |
Beror på det valda testramverket |
-t\|--list-tests |
--list-tests |
-- <RunSettings arguments> |
Stöds inte |
Viktig
Innan du anger några Microsoft.Testing.Platform
argument måste du lägga till --
för att skilja dotnet test
argument från de nya plattformsargumenten. Till exempel dotnet test --no-build -- --list-tests
.
vstest.console.exe
Om du använder vstest.console.exe
direkt rekommenderar vi att du ersätter den med kommandot dotnet test
.
Testutforskaren
När du använder Visual Studio eller Visual Studio Code Test Explorer kan du behöva aktivera stöd för den nya testplattformen.
Visual Studio
Visual Studio Test Explorer stöder den nya testplattformen som börjar med version 17.14. Om du använder en tidigare version kan du behöva uppdatera Visual Studio till den senaste versionen.
Visual Studio Code
Visual Studio Code Test Explorer stöder den nya testplattformen som börjar med version X.
Azure DevOps
När du använder Azure DevOps-uppgifter kan du behöva uppdatera din pipeline för att använda den nya testplattformen.
VSTest-uppgift
Om du använder VSTest-uppgift i Azure DevOps kan du ersätta den med .NET Core-uppgift.
.NET Core-uppgift
Om du använder .NET Core-uppgiftbehövs inga ändringar.