Udostępnij za pomocą


Obsługa platformy Microsoft.Testing.Platform w narzędziu NUnit (NUnit runner)

Aplikacja NUnit obsługuje uruchamianie testów zarówno z VSTest, jak iMicrosoft.Testing.Platform (MTP). Obsługę MTP zapewnia NUnit runner, który może uruchamiać testy we wszystkich kontekstach (na przykład w potokach ciągłej integracji (CI), CLI, Eksploratorze testów Visual Studio oraz Eksploratorze testów VS Code). Moduł uruchamiający NUnit jest osadzony bezpośrednio w projektach testowych NUnit i nie ma żadnych innych zależności aplikacji, takich jak vstest.console lub dotnet test, wymagane do uruchomienia testów. Jednak nadal można uruchamiać testy przy użyciu dotnet test.

Oprogramowanie uruchamiające NUnit jest open source i opiera się na Microsoft.Testing.Platform. Kod Microsoft.Testing.Platform można znaleźć w repozytorium microsoft/testfx GitHub. Moduł uruchamiający NUnit jest obsługiwany w systemie NUnit3TestAdapter w wersji 5.0 lub nowszej. Aby uzyskać więcej informacji, zobacz NUnit i Microsoft.Testing.Platform

Włącz moduł uruchamiający NUnit w projekcie NUnit

Aby włączyć moduł uruchamiający NUnit, dodaj właściwość EnableNUnitRunner i ustaw OutputType na Exe w pliku projektu. Należy również upewnić się, że używasz NUnit3TestAdapter w wersji 5.0 lub nowszej.

Napiwek

Aby upewnić się, że wszystkie projekty testowe w rozwiązaniu używają modułu uruchamiającego NUnit, ustaw właściwości EnableNUnitRunner i TestingPlatformDotnetTestSupport w pliku Directory.Build.props zamiast pojedynczych plików projektu.

Rozważmy następujący przykładowy plik projektu:

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

Konfiguracje i filtry

.runsettings

Moduł uruchamiający NUnit obsługuje ustawienia uruchamiania poprzez opcję wiersza polecenia --settings. W poniższych poleceniach przedstawiono przykłady.

Korzystanie z dotnet run:

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

Korzystanie z dotnet exec:

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

-lub-

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

Przy użyciu pliku wykonywalnego:

Contoso.MyTests.exe --settings config.runsettings

Filtr testów

Można dostarczyć testy filtru bezproblemowo przy użyciu opcji wiersza polecenia --filter. W poniższych poleceniach przedstawiono kilka przykładów.

Korzystanie z dotnet run:

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

Korzystanie z dotnet exec:

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

-lub-

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

Przy użyciu pliku wykonywalnego:

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