Delen via


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"