Microsoft.Testing.Platform (MTP) támogatása az NUnit-ben (NUnit futtató)

Borravaló

A futók engedélyezése előtt tekintse meg a tesztplatformok áttekintését.

Az NUnit támogatja a tesztek futtatását mind a VSTest, mind a Microsoft.Testing.Platform (MTP)használatával. Az MTP támogatását az NUnit futó biztosítja, amely minden környezetben futtathat teszteket (például folyamatos integrációs (CI) pipelines, parancssori felület, Visual Studio Test Explorer és VS Code Text Explorer). Az NUnit-futó közvetlenül az NUnit-tesztprojektekbe van beágyazva, és a tesztek futtatásához nincs szükség más alkalmazásfüggőségekre, például vstest.console vagy dotnet test. A teszteket azonban továbbra is futtathatja a dotnet testhasználatával.

Az NUnit futó nyílt forráskódú, és az MTP-re épül. A Microsoft.Testing.Platform GitHub adattárban található kód. Az NUnit futó az NUnit3TestAdapter 5.0-s vagy újabb verziójában támogatott. További információ: NUnit és MTP.

Az NUnit-futó engedélyezése egy NUnit-projektben

Az NUnit-futó engedélyezéséhez adja hozzá a EnableNUnitRunner tulajdonságot, és állítsa a OutputType értéket Exe-re a projekt fájlban. Arról is gondoskodnia kell, hogy NUnit3TestAdapter 5.0-s vagy újabb verzióját használja.

Borravaló

Annak érdekében, hogy a megoldás összes tesztprojektje használja az NUnit-futót, állítsa be a EnableNUnitRunner és TestingPlatformDotnetTestSupport tulajdonságokat a Directory.Build.props fájlban az egyes project fájlok helyett.

Tekintse meg a következő példát project fájlra:

<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/unit-testing-with-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>

Konfigurációk és szűrők

.runsettings

Az NUnit tesztelő a parancssori opció segítségével támogatja a --settings. Az alábbi parancsok példákat mutatnak be.

A dotnet runhasználata:

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

A dotnet exechasználata:

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

-vagy-

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

A végrehajtható fájl használata:

Contoso.MyTests.exe --settings config.runsettings

Tesztszűrő

A teszteket zökkenőmentesen megadhatja a parancssori kapcsolóval --filter. Az alábbi parancsok példákat mutatnak be.

A dotnet runhasználata:

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

A dotnet exechasználata:

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

-vagy-

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

A végrehajtható fájl használata:

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