Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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
argumentsan die Aufgabe übergeben haben, befolgen Sie die gleichen Anleitungen für diedotnet 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)