Microsoft.Testing.Platform-ondersteuning in NUnit (NUnit runner)
NUnit ondersteunt het uitvoeren van tests met zowel VSTest als Microsoft.Testing.Platform (MTP). De ondersteuning voor MTP wordt mogelijk gemaakt door de NUnit runner, die tests kan uitvoeren in alle contexten (bijvoorbeeld CI-pijplijnen (continue integratie), CLI, Visual Studio Test Explorer en VS Code Text Explorer. De NUnit runner is rechtstreeks ingesloten in uw NUnit-testprojecten en er zijn geen andere app-afhankelijkheden, zoals vstest.console
of dotnet test
, die nodig zijn om uw tests uit te voeren. U kunt uw tests echter nog steeds uitvoeren met behulp van dotnet test
.
De NUnit runner is open source en bouwt voort op Microsoft.Testing.Platform
. U vindt Microsoft.Testing.Platform
code in microsoft/testfx GitHub-opslagplaats. De NUnit runner wordt ondersteund in NUnit3TestAdapter versie 5.0 of hoger. Zie NUnit en Microsoft.Testing.Platform voor meer informatie
NUnit runner inschakelen in een NUnit-project
U kunt NUnit runner inschakelen door de eigenschap EnableNUnitRunner
toe te voegen en OutputType
in te stellen op Exe
in uw projectbestand. U moet er ook voor zorgen dat u NUnit3TestAdapter
versie 5.0 of hoger gebruikt.
Tip
Om ervoor te zorgen dat alle testprojecten in uw oplossing de NUnit runner gebruiken, stelt u de eigenschappen EnableNUnitRunner
en TestingPlatformDotnetTestSupport
in Directory.Build.props bestand in in plaats van afzonderlijke projectbestanden.
Bekijk het volgende voorbeeldprojectbestand:
<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>
Configuraties en filters
.runsettings
De NUnit runner ondersteunt de runsettings via de opdrachtregeloptie --settings
. De volgende opdrachten geven voorbeelden weer.
Met behulp van dotnet run
:
dotnet run --project Contoso.MyTests -- --settings config.runsettings
Met behulp van dotnet exec
:
dotnet exec Contoso.MyTests.dll --settings config.runsettings
-of-
dotnet Contoso.MyTests.dll --settings config.runsettings
Het uitvoerbare bestand gebruiken:
Contoso.MyTests.exe --settings config.runsettings
Testfilter
U kunt de tests filteren naadloos met behulp van de opdrachtregeloptie --filter
. In de volgende opdrachten ziet u enkele voorbeelden.
Met behulp van dotnet run
:
dotnet run --project Contoso.MyTests -- --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Met behulp van dotnet exec
:
dotnet exec Contoso.MyTests.dll --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
-of-
dotnet Contoso.MyTests.dll --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Gebruik maken van het uitvoerbare bestand:
Contoso.MyTests.exe --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"