Dela via


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.exeoch 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.