Compartir a través de


Compatibilidad de Microsoft.Testing.Platform con NUnit (plataforma de ejecución de NUnit)

NUnit admite la ejecución de pruebas con VSTest y Microsoft.Testing.Platform (MTP). La compatibilidad con MTP se basa en el ejecutor de NUnit, que puede ejecutar pruebas en todos los contextos (por ejemplo, canalizaciones de integración continua (CI), CLI, Explorador de pruebas de Visual Studio y Explorador de texto de VS Code. El ejecutor de NUnit se inserta directamente en los proyectos de prueba de NUnit y no hay otras dependencias de la aplicación, como vstest.console o dotnet test, necesarias para ejecutar las pruebas. Sin embargo, todavía puede ejecutar las pruebas mediante dotnet test.

El ejecutor de NUnit es de código abierto y se basa en Microsoft.Testing.Platform. Puede encontrar el código Microsoft.Testing.Platform en el repositorio de GitHub microsoft/testfx. El ejecutor de NUnit se admite en la versión 5.0 o posterior de NUnit3TestAdapter. Para obtener más información, consulte NUnit y Microsoft.Testing.Platform.

Habilitación del ejecutor de NUnit en un proyecto de NUnit

Puede habilitar el ejecutor de NUnit agregando la propiedad EnableNUnitRunner y configurando OutputType a Exe en el archivo del proyecto. También debe asegurarse de que está usando la versión 5.0 o posterior de NUnit3TestAdapter.

Sugerencia

Para asegurarse de que todos los proyectos de prueba de la solución utilicen el ejecutor de NUnit, establezca las propiedades `EnableNUnitRunner` y `TestingPlatformDotnetTestSupport` en el archivo `Directory.Build.props` en lugar de archivos de proyecto individuales.

Considere el siguiente archivo de proyecto de ejemplo:

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

Configuraciones y filtros

.runsettings

El ejecutor de NUnit admite runsettings a través de la opción --settingsde línea de comandos . Los comandos siguientes muestran ejemplos.

Uso de dotnet run:

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

Uso de dotnet exec:

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

-o-

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

Con el archivo ejecutable:

Contoso.MyTests.exe --settings config.runsettings

Filtro de pruebas

Puede proporcionar las pruebas de filtro sin problemas mediante la opción de línea de comandos --filter. Los siguientes comandos muestran algunos ejemplos.

Uso de dotnet run:

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

Uso de dotnet exec:

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

-o-

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

Con el archivo ejecutable:

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