Dela via


Stöd för Microsoft.Testing.Platform i NUnit (NUnit runner)

NUnit stöder körning av tester med både VSTest och Microsoft.Testing.Platform (MTP). Stödet för MTP drivs av NUnit-löparen, som kan köra tester i alla kontexter (till exempel CI-pipelines (kontinuerlig integrering), CLI, Visual Studio Test Explorer och VS Code Text Explorer). NUnit-löparen är inbäddad direkt i dina NUnit-testprojekt och det finns inga andra appberoenden, till exempel vstest.console eller dotnet test, som behövs för att köra dina tester. Du kan dock fortfarande köra dina tester med hjälp av dotnet test.

NUnit-löparen är öppen källkod och bygger ovanpå Microsoft.Testing.Platform. Du hittar Microsoft.Testing.Platform kod i microsoft/testfx- GitHub-lagringsplats. NUnit-löparen stöds i NUnit3TestAdapter version 5.0 eller senare. Mer information finns i NUnit och Microsoft.Testing.Platform

Aktivera NUnit-testkörning i ett NUnit-projekt

Du kan aktivera NUnit runner genom att lägga till egenskapen EnableNUnitRunner och ange OutputType till Exe i projektfilen. Du måste också se till att du använder NUnit3TestAdapter version 5.0 eller senare.

Tips

För att säkerställa att alla testprojekt i lösningen använder NUnit-löparen anger du egenskaperna EnableNUnitRunner och TestingPlatformDotnetTestSupport i Directory.Build.props fil i stället för enskilda projektfiler.

Överväg följande exempelprojektfil:

<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>

Konfigurationer och filter

.runsettings

NUnit-löparen stöder körinställningar via kommandoradsalternativet --settings. Följande kommandon visar exempel.

Använda dotnet run:

dotnet run --project Contoso.MyTests -- --settings config.runsettings

Använda dotnet exec:

dotnet exec Contoso.MyTests.dll --settings config.runsettings

-eller-

dotnet Contoso.MyTests.dll --settings config.runsettings

Genom att använda det körbara programmet:

Contoso.MyTests.exe --settings config.runsettings

Testfilter

Du kan ange testerna filtrera sömlöst med hjälp av kommandoradsalternativet --filter. Följande kommandon visar några exempel.

Använda dotnet run:

dotnet run --project Contoso.MyTests -- --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"

Använda dotnet exec:

dotnet exec Contoso.MyTests.dll --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"

-eller-

dotnet Contoso.MyTests.dll --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"

Använd den körbara filen:

Contoso.MyTests.exe --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"