Freigeben über


Migrieren von VSTest zu Microsoft.Testing.Platform

In diesem Artikel erfahren Sie, wie Sie von VSTest zu Microsoft.Testing.Platform migrieren.

Melden Sie sich für die Verwendung von Microsoft.Testing.Platform an.

Der erste Schritt bei der Migration besteht darin, sich für die Verwendung von Microsoft.Testing.Platform zu entscheiden.

Fügen Sie <OutputType>Exe</OutputType> zu allen Testprojekten in der Lösung für alle Testframeworks hinzu. Folgen Sie danach den frameworkspezifischen Anleitungen.

MSTest

Microsoft.Testing.Platform wird von MSTest ab 3.2.0 unterstützt. Es wird jedoch empfohlen, auf die neueste verfügbare MSTest-Version zu aktualisieren.

Um sich anzumelden, fügen Sie <EnableMSTestRunner>true</EnableMSTestRunner> unter einem PropertyGroup in der Directory.Build.props-Datei hinzu.

Hinweis

Bei Verwendung von MSTest.Sdk wird standardmäßig Microsoft.Testing.Platform verwendet, es sei denn, <UseVSTest>true</UseVSTest> ist angegeben.

NUnit

Microsoft.Testing.Platform wird von NUnit3TestAdapter ab 5.0.0 unterstützt.

Um sich anzumelden, fügen Sie <EnableNUnitRunner>true</EnableNUnitRunner> unter einem PropertyGroup in der Directory.Build.props Datei hinzu.

xUnit.net

Microsoft.Testing.Platform wird ab xunit.v3 unterstützt.

Um die Funktion zu aktivieren, fügen Sie <UseMicrosoftTestingPlatformRunner>true</UseMicrosoftTestingPlatformRunner> unter PropertyGroup in der Directory.Build.props-Datei hinzu.

dotnet test

Anmelden für .NET 9 SDK und frühere Versionen

In .NET 9 SDK und früheren Versionen gibt es keine systemeigene Unterstützung für Microsoft.Testing.Platform für dotnet test. Der Support basiert auf der VSTest-Infrastruktur. Um dies zu verwenden, fügen Sie unter <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport> einer PropertyGroup Datei Directory.Build.props hinzu.

Von Bedeutung

Beim Ausführen der Microsoft.Testing.Platform-Unterstützung in diesem Modus müssen Sie -- hinzufügen, um die Argumente von den neuen Plattformargumenten zu trennendotnet test. Beispiel: dotnet test --no-build -- --list-tests.

Anmelden für .NET 10 SDK und höher

Ab .NET 10 SDK gibt es systemeigene Unterstützung für Microsoft.Testing.Platform. Um ihn zu verwenden, müssen Sie den Test-Runner als Microsoft.Testing.Platform in global.json angeben.

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

Von Bedeutung

In diesem Modus wird das zusätzliche Element -- nicht mehr verwendet.

Aktualisierung von dotnet test-Aufrufen

Befehlszeilenoptionen dotnet test sind in zwei Kategorien unterteilt: build-bezogene Argumente und test-bezogene Argumente.

Die buildbezogenen Argumente sind für die Testplattform irrelevant und müssen daher nicht für die neue Plattform aktualisiert werden. Hier sind die build-bezogenen Argumente aufgeführt:

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

Die testbezogenen Argumente sind VSTest-spezifisch und müssen daher so transformiert werden, dass sie der neuen Plattform entsprechen. Die folgende Tabelle zeigt die Zuordnung zwischen den VSTest-Argumenten und der neuen Plattform:

VSTest-Argument Neues Plattformargument
--test-adapter-path <ADAPTER_PATH> Für Microsoft.Testing.Platform nicht relevant
--blame Für Microsoft.Testing.Platform nicht relevant
--blame-crash --crashdump (erfordert Crash-Dump-Erweiterung)
--blame-crash-dump-type <DUMP_TYPE> --crashdump-type (erfordert Absturzabbilderweiterung)
--blame-crash-collect-always Nicht unterstützt
--blame-hang --hangdump (erfordert Hang Dump-Erweiterung)
--blame-hang-dump-type <DUMP_TYPE> --hangdump-type (erfordert Hang Dump-Erweiterung)
--blame-hang-timeout <TIMESPAN> --hangdump-timeout (erfordert Hangdump-Erweiterung)
--collect <DATA_COLLECTOR_NAME> Hängt vom Datensammler ab
-d\|--diag <LOG_FILE> --diagnostic
--filter <EXPRESSION> Abhängig vom ausgewählten Testframework
-l\|--logger <LOGGER> Hängt vom Logger ab
--results-directory <RESULTS_DIR> --results-directory <RESULTS_DIR>
-s\|--settings <SETTINGS_FILE> Abhängig vom ausgewählten Testframework
-t\|--list-tests --list-tests
-- <RunSettings arguments> --test-parameter (bereitgestellt von VSTestBridge)

--collect

--collect ist ein allgemeiner Erweiterbarkeitspunkt in VSTest für jeden Datensammler. Das Erweiterbarkeitsmodell von Microsoft.Testing.Platform unterscheidet sich und es gibt kein solches zentrales Argument, das von allen Datensammlern verwendet werden soll. Mit Microsoft.Testing.Platform kann jeder Datensammler eine eigene Befehlszeilenoption hinzufügen. Das Ausführen von Microsoft CodeCoverage über VSTest kann z. B. wie folgt aussehen:

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

Mit Microsoft.Testing.Platform wird dies zu:

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

Von Bedeutung

Wie weiter oben erläutert, wird bei Verwendung der Microsoft.Testing.Platform mit dem VSTest-basierten dotnet testZusätzlichen -- benötigt, bevor die Argumente an die Plattform übergeben werden sollen. Das wird also dotnet test -- --coverage --coverage-output-format cobertura.

--filter

--filter ist der VSTest-basierte Filter.

MSTest und NUnit unterstützen das gleiche Filterformat, auch wenn sie mit Microsoft.Testing.Platform ausgeführt wird.

xUnit.net unterstützt nicht dasselbe Filterformat, wenn es mit Microsoft.Testing.Platform ausgeführt wird. Sie müssen vom VSTest-basierten Filter zur neuen Filterunterstützung in xunit.v3 migrieren, die mithilfe der folgenden Befehlszeilenoptionen bereitgestellt wird.

xUnit.net spezifischen Optionen:

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

Weitere Informationen finden Sie in der Dokumentation zu Microsoft.Testing.Platform für xUnit.net und Abfragefiltersprache für xUnit.net.

--logger

Was in der Regel als "Logger" in VSTest bezeichnet wurde, wird als "Reporter" in Microsoft.Testing.Platform bezeichnet. In Microsoft.Testing.Platform erfolgt die Protokollierung nur für Diagnosezwecke.

Ähnlich wie --collect, --logger ist ein allgemeiner Erweiterbarkeitspunkt in VSTest für jeden Logger (oder im Kontext von Microsoft.Testing.Platform, jeder Reporter). Jeder Microsoft.Testing.Platform Reporter kann eine eigene Befehlszeilenoption hinzufügen, und so gibt es keine zentrale Befehlszeilenoption wie VSTest --logger.

Einer der häufig verwendeten VSTest-Logger ist der TRX-Logger. Dieser Logger wird in der Regel wie folgt aufgerufen:

dotnet test --logger trx

Mit Microsoft.Testing.Platform wird der Befehl zu:

dotnet test --report-trx

Von Bedeutung

Zur Verwendung --report-trxmuss das Microsoft.Testing.Extensions.TrxReport NuGet-Paket installiert sein.

Von Bedeutung

Wie weiter oben erläutert, wird bei Verwendung der Microsoft.Testing.Platform mit der VSTest-basierten dotnet test ein zusätzliches -- benötigt, bevor die Argumente an die Plattform übergeben werden. Also wird das dotnet test -- --report-trx.

--settings

VSTest's --settings wird verwendet, um eine RunSettings-Datei für die Testausführung anzugeben. RunSettings wird von der Zentralen Microsoft.Testing.Platform nicht unterstützt und wurde durch eine modernere testconfig.json Konfigurationsdatei ersetzt. MSTest und NUnit unterstützen jedoch weiterhin die alten RunSettings beim Ausführen von Microsoft.Testing.Platform und --settings werden weiterhin unterstützt.

vstest.console.exe

Wenn Sie direkt verwenden vstest.console.exe , empfehlen wir, sie durch den dotnet test Befehl zu ersetzen.

Test-Explorer

Wenn Sie Visual Studio oder Visual Studio Code Test Explorer verwenden, müssen Sie möglicherweise die Unterstützung für Microsoft.Testing.Platform aktivieren.

Visual Studio

Visual Studio Test Explorer unterstützt Microsoft.Testing.Platform ab Version 17.14. Wenn Sie eine frühere Version verwenden, müssen Sie Möglicherweise Ihr Visual Studio auf die neueste Version aktualisieren.

Visual Studio Code

Visual Studio Code mit C# DevKit unterstützt Microsoft.Testing.Platform.

Azure DevOps

Wenn Sie Azure DevOps-Aufgaben verwenden, müssen Sie Ihre Pipeline möglicherweise aktualisieren, um Microsoft.Testing.Platform zu verwenden, je nachdem, welche Aufgabe Sie verwenden.

VSTest-Aufgabe

Wenn Sie die VSTest-Aufgabe in Azure DevOps verwenden, können Sie sie durch die .NET Core-Aufgabe ersetzen.

.NET Core CLI-Aufgabe

  • Wenn Sie benutzerdefinierte arguments an die Aufgabe übergeben haben, befolgen Sie die gleichen Anleitungen für die dotnet test-Migration.

  • Wenn Sie die DotNetCoreCLI-Aufgabe verwenden, ohne sich für die native Microsoft.Testing.Platform-Erfahrung für .NET 10 SDK und höher über eine global.json-Datei zu entscheiden, müssen Sie die Aufgabe so konfigurieren, dass sie korrekt auf das frühere Ergebnisverzeichnis und den angeforderten TRX-Bericht verweist. Beispiel:

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