Partilhar via


Suporte a Microsoft.Testing.Platform no NUnit (NUnit runner)

Dica

Antes de ativar um runner, consulte Visão Geral das Plataformas de Teste.

O NUnit suporta a execução de testes com VSTest e Microsoft.Testing.Platform (MTP). O suporte para MTP é suportado pelo runner NUnit, que pode executar testes em todos os contextos (por exemplo, pipelines de integração contínua (CI), CLI, Visual Studio Test Explorer e VS Code Text Explorer). O NUnit runner é incorporado diretamente em seus projetos de teste do NUnit e não há outras dependências do aplicativo, como vstest.console ou dotnet test, necessárias para executar seus testes. No entanto, você ainda pode executar seus testes usando dotnet test.

O executável NUnit é open source e é construído sobre Microsoft.Testing.Platform. Pode encontrar código Microsoft.Testing.Platform no repositório microsoft/testfx GitHub. O executor NUnit é suportado na versão 5.0 ou superior do NUnit3TestAdapter. Para obter mais informações, consulte NUnit e Microsoft.Testing.Platform

Ativar o runner NUnit num projecto NUnit

Podes ativar o runner NUnit adicionando a propriedade EnableNUnitRunner e definindo OutputType para Exe no teu ficheiro de project. Você também precisa garantir que está usando NUnit3TestAdapter versão 5.0 ou mais recente.

Dica

Para garantir que todos os projetos de teste na sua solução usam o executor NUnit, defina as propriedades EnableNUnitRunner e TestingPlatformDotnetTestSupport no ficheiro Directory.Build.props em vez de ficheiros individuais de project.

Considere o seguinte ficheiro de projeto exemplo:

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

Configurações e filtros

.runsettings

O executador NUnit suporta as definições de execução através da opção de linha de comando --settings. Os comandos a seguir mostram exemplos.

Usando dotnet run:

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

Usando dotnet exec:

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

-ou-

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

Usando o executável:

Contoso.MyTests.exe --settings config.runsettings

Filtro de testes

É possível fornecer o filtro dos testes de forma perfeita usando a opção de linha de comando --filter. Os comandos a seguir mostram alguns exemplos.

Usando dotnet run:

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

Usando dotnet exec:

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

-ou-

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

Usando o executável:

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