Suporte a Microsoft.Testing.Platform no NUnit (NUnit runner)
O NUnit suporta a execução de testes com VSTest e Microsoft.Testing.Platform (MTP). O suporte para MTP é alimentado pelo corredor 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 corredor NUnit é de código aberto e se baseia em Microsoft.Testing.Platform
. Você pode encontrar o código Microsoft.Testing.Platform
no repositório microsoft/testfx no 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
Habilitar o NUnit runner em um projeto NUnit
Você pode habilitar o NUnit runner adicionando a propriedade EnableNUnitRunner
e definindo OutputType
para Exe
em seu arquivo de projeto. 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 em sua solução usem o executor NUnit, defina as propriedades EnableNUnitRunner
e TestingPlatformDotnetTestSupport
em arquivo Directory.Build.props em vez de arquivos de projeto individuais.
Considere o seguinte arquivo de projeto de 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"