Delen via


Vergelijking van Microsoft.Testing.Platform en VSTest

Microsoft.Testing.Platform is een lichtgewicht en draagbaar alternatief voor VSTest- voor het uitvoeren van tests in opdrachtregelpijplijnen, in CI-pijplijnen (continue integratie), in Visual Studio Test Explorer en in Visual Studio Code. In dit artikel leert u de belangrijkste verschillen tussen Microsoft.Testing.Platform en VSTest.

Verschillen in testuitvoering

Tests worden op verschillende manieren uitgevoerd, afhankelijk van de runner.

VSTest-tests uitvoeren

VSTest wordt geleverd met Visual Studio, de .NET SDK en als zelfstandig hulpprogramma in het Microsoft.TestPlatform NuGet-pakket. VSTest maakt gebruik van een uitvoerbare runner voor het uitvoeren van tests, vstest.console.exegenoemd, die rechtstreeks of via dotnet testkunnen worden gebruikt.

Microsoft.Testing.Platform-tests uitvoeren

Microsoft.Testing.Platform is rechtstreeks in uw testproject ingesloten en verzendt geen extra uitvoerbare bestanden. Wanneer u het uitvoerbare project uitvoert, worden uw tests uitgevoerd. Zie voor meer informatie over het uitvoeren van Microsoft.Testing.Platform-tests Overzicht van Microsoft.Testing.Platform: Run and debug tests.

Naamruimten en NuGet-pakketten

Als u vertrouwd wilt raken met Microsoft.Testing.Platform en VSTest, is het handig om inzicht te krijgen in de naamruimten en NuGet-pakketten die door elk ervan worden gebruikt.

VSTest-naamruimten

VSTest is een verzameling testhulpprogramma's die ook wel bekend staan als het Test Platform. De VSTest-broncode is opensource en beschikbaar in de microsoft/vstest GitHub-opslagplaats. De code maakt gebruik van de Microsoft.TestPlatform.*-naamruimte.

VSTest is uitbreidbaar en algemene typen worden in Microsoft.TestPlatform.ObjectModel NuGet-pakket geplaatst.

Microsoft.Testing.Platform-naamruimten

Microsoft.Testing.Platform is gebaseerd op Microsoft.Testing.Platform NuGet-pakket en andere bibliotheken in de Microsoft.Testing.* naamruimte. Net als VSTest is de Microsoft.Testing.Platform opensource en heeft een microsoft/testfx GitHub-opslagplaats.

Communicatieprotocol

Notitie

Visual Studio Test Explorer ondersteunt het Microsoft.Testing.Platform-protocol sinds 17.12 en hoger. Als u uw tests uitvoert/foutopsporing uitvoert met eerdere versies van Visual Studio, gebruikt Test Explorer vstest.console.exe en het oude protocol om deze tests uit te voeren.

Microsoft.Testing.Platform maakt gebruik van een JSON-RPC gebaseerd protocol om te communiceren tussen Visual Studio en het testrunnerproces. Het protocol wordt gedocumenteerd in de MSTest GitHub-opslagplaats.

VSTest maakt ook gebruik van een op JSON gebaseerd communicatieprotocol, maar is niet JSON-RPC gebaseerd.

Het nieuwe protocol uitschakelen

Als u het gebruik van het nieuwe protocol in Test Explorer wilt uitschakelen, kunt u het project bewerken om de volgende eigenschap toe te voegen: <DisableTestingPlatformServerCapability>true</DisableTestingPlatformServerCapability>.

U kunt ook naar opties voor preview-functies in Visual Studio gaan en de selectie van de optie 'Testplatformservermodus gebruiken' opheffen.

Uitvoerbare bestanden

VSTest verzendt meerdere uitvoerbare bestanden, met name vstest.console.exe, testhost.exeen datacollector.exe. MSTest is echter rechtstreeks in uw testproject ingesloten en verzendt geen andere uitvoerbare bestanden. Het uitvoerbare bestand waarmee uw testproject wordt gecompileerd, wordt gebruikt om alle testhulpprogramma's te hosten en alle taken uit te voeren die nodig zijn om tests uit te voeren.

Migreren vanuit VSTest

Naast de stappen die specifiek zijn voor uw testframework, moet u uw testinfrastructuur bijwerken om ruimte te bieden aan Microsoft.Testing.Platform.

dotnet test

Opdrachtregelopties van dotnet test zijn onderverdeeld in twee categorieën: gerelateerde argumenten bouwen en gerelateerde testen.

De aan build gerelateerde argumenten worden doorgegeven aan de opdracht dotnet build en hoeven daarom niet te worden bijgewerkt voor het nieuwe platform. Hieronder staan de gerelateerde argumenten voor bouwen:

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

De testgerelateerde argumenten zijn specifiek voor VSTest en moeten dus worden getransformeerd om overeen te komen met het nieuwe platform. In de volgende tabel ziet u de koppeling tussen de VSTest-argumenten en het nieuwe platform.

VSTest-argument Nieuw platformargument
--test-adapter-path <ADAPTER_PATH> Niet ondersteund
--blame Niet ondersteund
--blame-crash --crashdump vereist crashdump-extensie
--blame-crash-dump-type <DUMP_TYPE> --crashdump-type vereist crashdump-extensie
--blame-crash-collect-always Niet ondersteund
--blame-hang --hangdump vereist hangdump-extensie
--blame-hang-dump-type <DUMP_TYPE> --hangdump-type vereist hangdump-extensie
--blame-hang-timeout <TIMESPAN> --hangdump-timeout vereist hangdump-extensie
--collect <DATA_COLLECTOR_NAME> Afhankelijk van de gegevensverzamelaar
-d\|--diag <LOG_FILE> --diagnostic
--filter <EXPRESSION> Is afhankelijk van het geselecteerde testframework
-l\|--logger <LOGGER> Hangt af van de logger
--results-directory <RESULTS_DIR> --results-directory <RESULTS_DIR>
-s\|--settings <SETTINGS_FILE> Is afhankelijk van het geselecteerde testframework
-t\|--list-tests --list-tests
-- <RunSettings arguments> --test-parameter (geleverd door VSTestBridge)

Belangrijk

Voordat u Microsoft.Testing.Platform argumenten opgeeft, moet u -- toevoegen om de dotnet test argumenten te scheiden van de nieuwe platformargumenten. Bijvoorbeeld dotnet test --no-build -- --list-tests.

vstest.console.exe

Als u vstest.console.exe rechtstreeks gebruikt, raden we u aan deze te vervangen door de opdracht dotnet test.

Test Explorer

Wanneer u Visual Studio of Visual Studio Code Test Explorer gebruikt, moet u mogelijk de ondersteuning voor het nieuwe testplatform inschakelen.

Visual Studio

Visual Studio Test Explorer ondersteunt het nieuwe testplatform vanaf versie 17.14. Als u een eerdere versie gebruikt, moet u visual studio mogelijk bijwerken naar de nieuwste versie.

Visual Studio Code

Visual Studio Code Test Explorer ondersteunt het nieuwe testplatform vanaf versie X.

Azure DevOps

Wanneer u Azure DevOps-taken gebruikt, moet u mogelijk uw pijplijn bijwerken om het nieuwe testplatform te kunnen gebruiken.

VSTest-taak

Als u de VSTest-taak in Azure DevOps gebruikt, kunt u deze vervangen door de .NET Core-taak.

.NET Core-taak

Als u de .NET Core-taakgebruikt, zijn er geen wijzigingen nodig.