Freigeben über


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 testausführen.

Der NUnit-Runner ist Open Source und baut auf Microsoft.Testing.Platformauf. 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"