Jämförelse mellan Microsoft.Testing.Platform och VSTest
Microsoft.Testing.Platform
är ett enkelt och bärbart alternativ till VSTest- för att köra tester på kommandoraden, i CI-pipelines (kontinuerlig integrering), 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ör VSTest-tester
VSTest levereras med Visual Studio, .NET SDK och som ett fristående verktyg i Microsoft.TestPlatform NuGet-paketet. VSTest använder ett körbart exekveringsprogram för att köra tester, kallat vstest.console.exe
, som kan användas direkt eller via dotnet test
.
Utför 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 exekverbara filen för ditt projekt körs dina tester. 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
Om du vill 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 Test Platform. VSTest-källkoden är öppen källkod och finns i microsoft/vstest GitHub-lagringsplats. Koden använder namnområdet Microsoft.TestPlatform.*
.
VSTest är utökningsbart och vanliga typer placeras i Microsoft.TestPlatform.ObjectModel NuGet-paketet.
Microsoft.Testing.Platform-namnområden
Microsoft.Testing.Platform baseras på Microsoft.Testing.Platform NuGet-paket och andra bibliotek i Microsoft.Testing.*
namnrymd. Precis som VSTest är Microsoft.Testing.Platform
öppen källkod och har en microsoft/testfx- GitHub-lagringsplats.
Kommunikationsprotokoll
Not
Visual Studio Test Explorer har stöd för protokollet Microsoft.Testing.Platform sedan 17.12 och senare. Om du kör/felsöker dina tester med hjälp av tidigare versioner av Visual Studio använder Test Explorer vstest.console.exe
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 på MSTest GitHub-lagringsplats.
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>
.
Du kan också gå till Alternativ för förhandsversionsfunktioner i Visual Studio och avmarkera alternativet "Använd testplattformsserverläge".
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 din testinfrastruktur så att den kan hantera 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 Hangdump-tillägg |
--blame-hang-dump-type <DUMP_TYPE> |
--hangdump-type kräver hängtömningstillägg |
--blame-hang-timeout <TIMESPAN> |
--hangdump-timeout kräver Hang dump-tillägg |
--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.