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.
Dieser Artikel enthält Einblicke in den dotnet test CLI-Befehl, einschließlich seiner Verlaufskompatibilität mit VSTest und Microsoft.Testing.Platform (MTP).
Der dotnet test Befehl wird in zwei primären Modi ausgeführt:
-
VSTest-Modus : Dies ist der Standardmodus für
dotnet testund war der einzige Modus, der vor dem .NET 10 SDK verfügbar war. Es wurde hauptsächlich für VSTest entwickelt, kann aber auch microsoft.Testing.Platform Test über das Microsoft.Testing.Platform.MSBuild NuGet-Paket ausführen. - Microsoft.Testing.Platform-Modus : Mit dem .NET 10 SDK eingeführt, unterstützt dieser Modus ausschließlich Testanwendungen, die mit Microsoft.Testing.Platform erstellt wurden.
Tipp
Informationen zur CLI-Referenz finden Sie unter dotnet test.
VSTest-Modus von dotnet test
Seit langer Zeit war VSTest die einzige Testplattform in .NET. Daher wurde dotnet test ausschließlich für VSTest entwickelt, wobei alle Befehlszeilenoptionen auf VSTest zugeschnitten sind.
Der Prozess umfasst das Aufrufen des VSTest MSBuild-Ziels, das andere interne Ziele zur Ausführung auslöst und letztendlich vstest.console ausführt. Alle dotnet test Befehlszeilenoptionen werden in "vstest.console" in ihre Entsprechungen übersetzt.
Ausführen von MTP-Projekten mit VSTest-Modus
dotnet test wurde entwickelt, um VSTest-Projekte im VSTest-Modus auszuführen. Sie können jedoch MTP-Projekte im dotnet test VSTest-Modus mithilfe des Microsoft.Testing.Platform.MSBuild-Pakets ausführen. Aus Sicht des Benutzers wird diese Unterstützung aktiviert, indem die TestingPlatformDotnetTestSupport MSBuild-Eigenschaft auf true ( false aus Gründen der Abwärtskompatibilität standardmäßig) festgelegt wird. Wenn diese Eigenschaft auf truegesetzt ist, ändert Microsoft.Testing.Platform.MSBuild das Verhalten des Ziels VSTest und leitet es zum Aufruf von InvokeTestingPlatformum.
InvokeTestingPlatform ist ein MSBuild-Ziel, das in Microsoft.Testing.Platform.MSBuild enthalten ist, das für die ordnungsgemäße Ausführung von MTP-Testanwendungen als ausführbare Dateien verantwortlich ist. VSTest-spezifische Befehlszeilenoptionen wie --loggerwerden in diesem Modus stillschweigend ignoriert. Um MTP-spezifische Argumente wie --report-trxeinzufügen, müssen Sie diese nach einem zusätzlichen --anhängen. Beispiel: dotnet test -- --report-trx. In MTP 1.9 wird eine Warnung mit Code MTP0001 erzeugt, wenn ein Argument erkannt wird, das im Hintergrund ignoriert wird.
Hinweis
MSTest und NUnit verwenden das Paket "Microsoft.Testing.Extensions.VSTestBridge ". Durch das Festlegen von EnableMSTestRunner oder EnableNUnitRunner (wodurch Microsoft.Testing.Platform aktiviert wird) unterstützt Ihr Testprojekt sowohl VSTest als auch Microsoft.Testing.Platform.
Wenn Sie in diesem Szenario den VSTest-Modus dotnet test verwenden und TestingPlatformDotnetTestSupport nicht auf "true" festgelegt ist, läuft im Wesentlichen alles vollständig mit VSTest, als ob EnableMSTestRunner und EnableNUnitRunner nicht auf "true" festgelegt sind.
Hinweis
Es wird dringend empfohlen, die TestingPlatformDotnetTestSupport Eigenschaft in Directory.Build.propsfestzulegen. Dadurch wird sichergestellt, dass Sie sie nicht einzeln zu jeder Testprojektdatei hinzufügen müssen. Darüber hinaus verhindert es das Risiko, ein neues Testprojekt einzuführen, das diese Eigenschaft nicht festlegt, was zu einer Lösung führen kann, bei der einige Projekte VSTest verwenden, während andere Microsoft.Testing.Platform verwenden. Diese gemischte Konfiguration funktioniert möglicherweise nicht ordnungsgemäß und ist ein nicht unterstütztes Szenario.
Wichtig
Das Ausführen von MTP-Projekten im VSTest-Modus wird als veraltet angesehen zugunsten der neueren Erfahrung im .NET 10 SDK. Die Unterstützung der Ausführung unter diesem Modus wird in Microsoft.Testing.Platform Version 2 entfernt, wenn sie mit .NET 10 SDK ausgeführt wird. Für die Abwärtskompatibilität bleibt die Unterstützung für das .NET 9 SDK und ältere Versionen verfügbar.
Weitere Informationen finden Sie unter Migrieren zum MTP-Modus von dotnet test.
In der folgenden Liste werden die Befehlszeilenoptionen des dotnet test Befehls im VSTest-Modus beschrieben, die von Microsoft.Testing.Platform unterstützt werden. Diese Optionen sind spezifisch für den Buildprozess und werden nicht an VSTest übergeben, weshalb sie mit MTP arbeiten.
-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>
Tipp
Sie können die Befehlszeilenargumente Ihrer Testanwendung über die MSBuild property anpassen:
<PropertyGroup>
...
<TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments>
</PropertyGroup>
Weitere Informationen zum Ausführen von MTP-Projekten im VSTest-Modus von dotnet testfinden Sie unter Verwenden Sie Microsoft.Testing.Platform mit dem VSTest-Modus von dotnet test.
Erweiterte technische Details
Im dotnet test VSTest-Modus wird dies -- verwendet, um die RunSettings-Argumente anzugeben. Ursprünglich wurde dotnet test entwickelt, um diese Argumente als eine MSBuild-Eigenschaft an VSTestCLIRunSettings zu übergeben. Daher verwenden wir den Wert von VSTestCLIRunSettings beim Ausführen von MTP-Testanwendungen im VSTest-Modus, um "Anwendungsargumente" darzustellen.
Mischen von VSTest und Microsoft.Testing.Platform (MTP)
Bei der Ausführung von dotnet test im VSTest-Modus wird empfohlen, nicht sowohl VSTest als auch Microsoft.Testing.Platform in derselben Lösung zu verwenden.
Dieses Szenario wird nicht offiziell unterstützt, und Sie sollten folgendes beachten:
- VSTest-spezifische Befehlszeilenoptionen gelten nur für VSTest-Projekte und nicht für MTP-Testanwendungen.
- MTP-spezifische Befehlszeilenoptionen, die nach
--angegeben werden, werden als RunSettings-Argumente für VSTest-Projekte behandelt.
Wichtige Erkenntnisse
- Um MTP-Testanwendungen im
dotnet test-VSTest-Modus auszuführen, sollten SieMicrosoft.Testing.Platform.MSBuildverwenden, MTP-spezifische Befehlszeilenoptionen nach dem zusätzlichen--übergeben undTestingPlatformDotnetTestSupportauftruesetzen. - VSTest-orientierte Befehlszeilenoptionen werden im Hintergrund ignoriert.
Aufgrund dieser Probleme hat .NET einen neuen dotnet test Modus eingeführt, der speziell für MTP entwickelt wurde. Wir empfehlen MTP-Benutzern, vom VSTest-Modus dotnet test zum neuen Modus mit dem .NET 10 SDK zu wechseln.
Microsoft.Testing.Platform (MTP)-Modus von dotnet test
Um die Probleme zu beheben, die beim Ausführen dotnet test von MTP im VSTest-Modus auftreten, hat .NET einen neuen Modus im .NET 10 SDK eingeführt, der speziell für MTP entwickelt wurde.
Um diesen Modus zu aktivieren, fügen Sie ihrer Datei die folgende Konfiguration hinzu global.json :
{
"test": {
"runner": "Microsoft.Testing.Platform"
}
}
Wichtig
Die dotnet test-Oberfläche für MTP wird nur in Microsoft.Testing.Platform Version 1.7 und höher unterstützt.
Da dieser Modus speziell für Microsoft.Testing.Platform entwickelt wurde, sind weder TestingPlatformDotnetTestSupport noch die zusätzlichen -- erforderlich.
Wichtig
Dieser Modus ist nur mit Microsoft.Testing.Platform Version 1.7.0 und höher kompatibel.
Wichtig
Wenn Ihr Testprojekt VSTest unterstützt, aber MTP nicht unterstützt, wird ein Fehler generiert.
Tipp
Sie können die Befehlszeilenargumente Ihrer Testanwendung über die MSBuild property anpassen:
<PropertyGroup>
...
<TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments>
</PropertyGroup>
Migrieren zum MTP-Modus von dotnet test
Für Benutzer von MTP, die den VSTest-Modus dotnet testverwenden, sind einige Aktionen erforderlich, um zur neueren dotnet test Oberfläche zu migrieren:
- Fügen Sie, wie oben gezeigt, einen Abschnitt zu Ihrer
global.json-Datei hinzu. - Entfernen Sie
TestingPlatformDotnetTestSupportdie MSBuild-Eigenschaft, da sie nicht mehr erforderlich ist. - Entfernen Sie die MSBuild-Eigenschaften
TestingPlatformCaptureOutputundTestingPlatformShowTestsFailure, da sie nicht mehr vom neuendotnet testverwendet werden. - Entfernen Sie das zusätzliche
--, z. B. solltedotnet test -- --report-trxzudotnet test --report-trxwerden. - Wenn sie beispielsweise eine bestimmte Lösung (oder ein Verzeichnis mit Lösung) übergeben,
dotnet test MySolution.slnsollte dies zu .dotnet test --solution MySolution.sln - Wenn Sie beispielsweise ein bestimmtes Projekt (oder ein Verzeichnis mit Projekt) übergeben,
dotnet test MyProject.csprojsollte dies zu .dotnet test --project MyProject.csproj - Wenn Sie beispielsweise eine bestimmte dll übergeben, sollte dies zu
dotnet test path/to/UnitTests.dllwerden. Beachten Sie, dass--test-modulesauch Globbing unterstützt.