Übersicht über den MSTest-Runner
Der MSTest Runner ist eine einfache und portierbare Alternative zu VSTest zum Ausführen von Tests in allen Kontexten (z. B. Continuous Integration-Pipelines (CI), CLI, Visual Studio-Test-Explorer und VS Code-Test-Explorer). Der MSTest Runner ist direkt in Ihre MSTest-Testprojekte eingebettet, und es sind keine anderen App-Abhängigkeiten wie vstest.console
oder dotnet test
erforderlich, um Ihre Tests auszuführen.
Der MSTest Runner ist Open Source und baut auf einer Microsoft.Testing.Platform
-Bibliothek auf. Sie finden Microsoft.Testing.Platform
-Code im Microsoft/testfx GitHub-Repository. Der MSTest Runner ist gebündelt mit MSTest in 3.2.0-preview.23623.1
oder einer neueren Version.
Aktivieren des MSTest-Runners in einem MSTest-Projekt
Es wird empfohlen, das MSTest SDK zu verwenden, da es die Projektkonfiguration und -aktualisierung erheblich vereinfacht und einen korrekten Abgleich der Versionen der Plattform (MSTest-Runner) und der zugehörigen Erweiterungen gewährleistet.
Wenn Sie MSTest SDK
verwenden, ist der MSTest-Runner standardmäßig aktiviert.
<Project Sdk="MSTest.Sdk/3.3.1">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
Alternativ können Sie MSTest-Runner aktivieren, indem Sie die EnableMSTestRunner
-Eigenschaft hinzufügen und OutputType
auf Exe
in der Projektdatei festlegen. Außerdem müssen Sie sicherstellen, dass Sie MSTest 3.2.0-preview.23623.1
oder neuer verwenden.
Betrachten Sie die folgende Beispielprojektdatei:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<!-- Enable the MSTest runner, this is an opt-in feature -->
<EnableMSTestRunner>true</EnableMSTestRunner>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
</PropertyGroup>
<ItemGroup>
<!--
MSTest meta package is the recommended way to reference MSTest.
It's equivalent to referencing:
Microsoft.NET.Test.Sdk
MSTest.TestAdapter
MSTest.TestFramework
MSTest.Analyzers
-->
<PackageReference Include="MSTest" Version="3.2.0" />
<!--
Coverlet collector isn't compatible with MSTest runner, you can
either switch to Microsoft CodeCoverage (as shown below),
or switch to be using coverlet global tool
https://github.com/coverlet-coverage/coverlet#net-global-tool-guide-suffers-from-possible-known-issue
-->
<PackageReference Include="Microsoft.Testing.Extensions.CodeCoverage"
Version="17.10.1" />
</ItemGroup>
</Project>
Tipp
Es wird empfohlen, die eigenschaft EnableMSTestRunner
in Directory.Build.props Datei anstelle csproj Datei festzulegen, um sicherzustellen, dass alle Testprojekte in Ihrer Lösung den MSTest runner verwenden.
Konfigurationen und Filter
.runsettings
Der MSTest-Runner unterstützt runsettings über die Befehlszeilenoption --settings
. Die vollständige Liste der unterstützten MSTest-Einträge finden Sie unter Konfigurieren von MSTest: Ausführungseinstellungen. Die folgenden Befehle zeigen verschiedene Verwendungsbeispiele.
Verwenden von dotnet run
:
dotnet run --project Contoso.MyTests -- --settings config.runsettings
Verwenden von dotnet exec
:
dotnet exec Contoso.MyTests.dll --settings config.runsettings
Oder
dotnet Contoso.MyTests.dll --settings config.runsettings
Mit der ausführbaren Datei:
Contoso.MyTests.exe --settings config.runsettings
Testfilter
Sie können die Tests nahtlos mit der Befehlszeilenoption --filter
. Die folgenden Befehle zeigen einige Beispiele.
Verwenden von dotnet run
:
dotnet run --project Contoso.MyTests -- --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Verwenden von dotnet exec
:
dotnet exec Contoso.MyTests.dll --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Oder
dotnet Contoso.MyTests.dll --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Mit der ausführbaren Datei:
Contoso.MyTests.exe --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"