Microsoft.Testing.Platform-Unterstützung in NUnit (NUnit runner)
NUnit unterstützt die Ausführung von Tests mit VSTest und Microsoft.Testing.Platform (MTP). Die Unterstützung für MTP wird vom NUnit-Runner unterstützt, der Tests in allen Kontexten (z. B. Ci-Pipelines für kontinuierliche Integration, CLI, Visual Studio Test Explorer und VS Code Text Explorer) ausführen kann. Der NUnit-Runner ist direkt in Ihre NUnit-Testprojekte eingebettet, und es gibt keine anderen App-Abhängigkeiten, z. B. vstest.console
oder dotnet test
, die zum Ausführen ihrer Tests erforderlich sind. Sie können Ihre Tests jedoch weiterhin mit dotnet test
ausführen.
Der NUnit-Runner ist Open Source und baut auf Microsoft.Testing.Platform
auf. Sie finden Microsoft.Testing.Platform
Code im microsoft/testfx GitHub-Repository. Der NUnit-Runner wird in NUnit3TestAdapter, Version 5.0 oder höher, unterstützt. Weitere Informationen finden Sie unter NUnit- und Microsoft.Testing.Platform-
Aktivieren von NUnit-Runner in einem NUnit-Projekt
Sie können NUnit-Runner aktivieren, indem Sie die EnableNUnitRunner
Eigenschaft hinzufügen und OutputType
in Ihrer Projektdatei auf Exe
festlegen. Außerdem müssen Sie sicherstellen, dass Sie NUnit3TestAdapter
Version 5.0 oder höher verwenden.
Tipp
Um sicherzustellen, dass alle Testprojekte in Ihrer Lösung den NUnit-Runner verwenden, legen Sie die eigenschaften EnableNUnitRunner
und TestingPlatformDotnetTestSupport
in Directory.Build.props Datei anstelle einzelner Projektdateien fest.
Betrachten Sie die folgende Beispielprojektdatei:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<!-- Enable the NUnit runner, this is an opt-in feature -->
<EnableNUnitRunner>true</EnableNUnitRunner>
<TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
<!--
Displays error on console in addition to the log file. Note that this feature comes with a performance impact.
For more information, visit https://learn.microsoft.com/dotnet/core/testing/microsoft-testing-platform-integration-dotnet-test#show-failure-per-test
-->
<TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0" />
<PackageReference Include="NUnit" Version="4.3.2" />
<PackageReference Include="NUnit.Analyzers" Version="4.6.0">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="NUnit3TestAdapter" Version="5.0.0" />
<!--
Coverlet collector isn't compatible with NUnit 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>
Konfigurationen und Filter
.runsettings
Der NUnit-Runner unterstützt runsettings über die Befehlszeilenoption --settings
. Die folgenden Befehle zeigen Beispiele.
Verwendung von dotnet run
:
dotnet run --project Contoso.MyTests -- --settings config.runsettings
Verwenden Sie 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
filtern. Die folgenden Befehle zeigen einige Beispiele.
Verwenden Sie 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"