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 test
und 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 true
gesetzt ist, ändert Microsoft.Testing.Platform.MSBuild das Verhalten des Ziels VSTest
und leitet es zum Aufruf von InvokeTestingPlatform
um. 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 --logger
werden in diesem Modus stillschweigend ignoriert. Um MTP-spezifische Argumente wie --report-trx
einzufügen, müssen Sie diese nach einem zusätzlichen --
anhängen. Beispiel: dotnet test -- --report-trx
.
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.props
festzulegen. 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.
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 test
finden 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.MSBuild
verwenden, MTP-spezifische Befehlszeilenoptionen nach dem zusätzlichen--
übergeben undTestingPlatformDotnetTestSupport
auftrue
setzen. - 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 dem Stammverzeichnis des Repositorys oder der Lösung eine dotnet.config
Datei hinzu.
[dotnet.test.runner]
name = "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>