Delen via


Migreren van VSTest naar Microsoft.Testing.Platform

In dit artikel leert u hoe u migreert van VSTest naar Microsoft.Testing.Platform.

Aanmelden om Microsoft.Testing.Platform te gebruiken

De eerste stap in de migratie is het aanmelden voor het gebruik van Microsoft.Testing.Platform.

Voeg voor alle testframeworks toe <OutputType>Exe</OutputType> aan alle testprojecten in de oplossing. Volg daarna de frameworkspecifieke richtlijnen.

MSTest

Microsoft.Testing.Platform wordt ondersteund door MSTest vanaf 3.2.0. Het is echter raadzaam om bij te werken naar de nieuwste beschikbare MSTest-versie.

Als u zich wilt aanmelden, voegt u <EnableMSTestRunner>true</EnableMSTestRunner> toe onder een PropertyGroup in het Directory.Build.props bestand.

Opmerking

Wanneer u MSTest.Sdk gebruikt, wordt Microsoft.Testing.Platform standaard gebruikt, tenzij <UseVSTest>true</UseVSTest> dit is opgegeven.

Eenheid

Microsoft.Testing.Platform wordt ondersteund door NUnit3TestAdapter vanaf 5.0.0.

Als u zich wilt aanmelden, voegt u <EnableNUnitRunner>true</EnableNUnitRunner> toe onder een PropertyGroup in het Directory.Build.props bestand.

xUnit.net

Microsoft.Testing.Platform wordt ondersteund vanaf xunit.v3.

Als u zich wilt aanmelden, voegt u <UseMicrosoftTestingPlatformRunner>true</UseMicrosoftTestingPlatformRunner> toe onder een PropertyGroup in bestand Directory.Build.props.

dotnet test

Aanmelden voor deelname aan .NET 9 SDK en eerder

In .NET 9 SDK en eerder is er geen systeemeigen ondersteuning voor Microsoft.Testing.Platform voor dotnet test. Ondersteuning is gebouwd op basis van de VSTest-infrastructuur. Om dat te gebruiken, voegt u <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport> toe onder een PropertyGroup in het Directory.Build.props bestand.

Belangrijk

Wanneer u Microsoft.Testing.Platform in deze modus draait, moet u -- toevoegen om de dotnet test-argumenten van de nieuwe platformargumenten te scheiden. Bijvoorbeeld: dotnet test --no-build -- --list-tests.

Aanmelden voor .NET 10 SDK en hoger

Vanaf .NET 10 SDK is er systeemeigen ondersteuning voor Microsoft.Testing.Platform. Als u deze wilt gebruiken, moet u de testrunner opgeven zoals Microsoft.Testing.Platform in global.json:

{
  "test": {
    "runner": "Microsoft.Testing.Platform"
  }
}

Belangrijk

In deze modus wordt de extra -- niet meer gebruikt.

Aanroepen dotnet test bijwerken

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

De argumenten met betrekking tot de build zijn niet relevant voor het testplatform en hoeven daarom niet te worden bijgewerkt voor het nieuwe platform. Hier worden argumenten met betrekking tot build weergegeven:

  • -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 toewijzing tussen de VSTest-argumenten en het nieuwe platform:

VSTest-argument Nieuw platform-argument
--test-adapter-path <ADAPTER_PATH> Niet relevant voor Microsoft.Testing.Platform
--blame Niet relevant voor Microsoft.Testing.Platform
--blame-crash --crashdump (vereist Crash Dump Extensie)
--blame-crash-dump-type <DUMP_TYPE> --crashdump-type (vereist crashdumpextensie)
--blame-crash-collect-always Niet ondersteund
--blame-hang --hangdump (vereist hangdumpextensie)
--blame-hang-dump-type <DUMP_TYPE> --hangdump-type (vereist hangdump-extensie)
--blame-hang-timeout <TIMESPAN> --hangdump-timeout (vereist Hang Dump-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> Afhankelijk 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)

--collect

--collect is een algemeen uitbreidbaarheidspunt in VSTest voor elke gegevensverzamelaar. Het uitbreidbaarheidsmodel van Microsoft.Testing.Platform is anders en er is geen gecentraliseerd argument dat door alle gegevensverzamelaars moet worden gebruikt. Met Microsoft.Testing.Platform kan elke gegevensverzamelaar een eigen opdrachtregeloptie toevoegen. Het uitvoeren van Microsoft CodeCoverage via VSTest is bijvoorbeeld vergelijkbaar met het volgende:

dotnet test --collect "Code Coverage;Format=cobertura"

Met Microsoft.Testing.Platform wordt dit:

dotnet test --coverage --coverage-output-format cobertura

Belangrijk

Zoals eerder uitgelegd, is bij het gebruik van Microsoft.Testing.Platform met het op VSTest-gebaseerde dotnet test de extra -- nodig voordat de argumenten die bedoeld zijn om te worden doorgegeven aan het platform. Dus, dit wordt dotnet test -- --coverage --coverage-output-format cobertura.

--filter

--filter is het VSTest-filter.

MSTest en NUnit ondersteunen dezelfde filterindeling, zelfs wanneer ze worden uitgevoerd met Microsoft.Testing.Platform.

xUnit.net biedt geen ondersteuning voor dezelfde filterindeling wanneer deze wordt uitgevoerd met Microsoft.Testing.Platform. U moet migreren van het op VSTest gebaseerde filter naar de nieuwe filterondersteuning in xunit.v3, die wordt geleverd met behulp van de volgende opdrachtregelopties.

xUnit.net specifieke opties:

  • --filter-class
  • --filter-not-class
  • --filter-method
  • --filter-not-method
  • --filter-namespace
  • --filter-not-namespace
  • --filter-trait
  • --filter-not-trait
  • --filter-query

Zie de documentatie van Microsoft.Testing.Platform voor xUnit.net en queryfiltertaal voor xUnit.net voor meer informatie.

--logger

Wat meestal 'logger' wordt genoemd in VSTest, wordt 'reporter' genoemd in Microsoft.Testing.Platform. Logboekregistratie in Microsoft.Testing.Platform is expliciet bedoeld voor diagnosedoeleinden.

Vergelijkbaar met --collect, --logger is een algemeen uitbreidbaarheidspunt in VSTest voor elke logger (of, in de context van Microsoft.Testing.Platform, elke reporter). Elke Microsoft.Testing.Platform-reporter heeft de vrijheid om een eigen commando-regeloptie toe te voegen, en dus is er geen gecentraliseerde commando-regeloptie zoals bij VSTest --logger.

Een van de veelgebruikte VSTest loggers is de TRX logger. Deze logger wordt meestal als volgt aangeroepen:

dotnet test --logger trx

Met Microsoft.Testing.Platform wordt de opdracht:

dotnet test --report-trx

Belangrijk

Als u wilt gebruiken --report-trx, moet het Microsoft.Testing.Extensions.TrxReport NuGet-pakket zijn geïnstalleerd.

Belangrijk

Zoals eerder uitgelegd, is er bij het gebruik van Microsoft.Testing.Platform met de op VSTest-gebaseerde dotnet test extra -- nodig voordat de argumenten die aan het platform moeten worden doorgegeven. Dus, dit wordt dotnet test -- --report-trx.

--settings

VSTest --settings wordt gebruikt om een RunSettings-bestand op te geven voor de testuitvoering. RunSettings wordt niet ondersteund door het kernbestand Microsoft.Testing.Platform en is vervangen door een moderner testconfig.json configuratiebestand. MSTest en NUnit ondersteunen echter nog steeds de oude RunSettings bij het uitvoeren van Microsoft.Testing.Platform en --settings worden nog steeds ondersteund.

vstest.console.exe

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

Test Explorer

Wanneer u Visual Studio of Visual Studio Code Test Explorer gebruikt, moet u mogelijk de ondersteuning voor Microsoft.Testing.Platform inschakelen.

Visual Studio

Visual Studio Test Explorer ondersteunt Microsoft.Testing.Platform 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 met C# DevKit ondersteunt Microsoft.Testing.Platform.

Azure DevOps

Wanneer u Azure DevOps-taken gebruikt, moet u mogelijk uw pijplijn bijwerken om Microsoft.Testing.Platform te gebruiken, afhankelijk van de taak die u gebruikt.

VSTest-taak

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

.NET Core CLI-taak

  • Als u een aangepaste arguments naar de taak hebt doorgegeven, volgt u dezelfde richtlijnen voor dotnet test migratie.

  • Als u de DotNetCoreCLI-taak gebruikt zonder gebruik te maken van de ingebouwde ervaring van Microsoft.Testing.Platform voor de .NET 10 SDK en later via het global.json bestand, moet u de taak arguments zo instellen dat deze correct verwijst naar de resultatenmap die eerder in gebruik was, evenals het aangevraagde TRX-rapport. Voorbeeld:

    - task: DotNetCoreCLI@2
      displayName: Run unit tests
      inputs:
        command: 'test'
        arguments: '-- --report-trx --results-directory $(Agent.TempDirectory)