Dela via


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