Partager via


Prise en charge de Microsoft.Testing.Platform dans NUnit (NUnit runner)

NUnit prend en charge l’exécution de tests avec VSTest et Microsoft.Testing.Platform (MTP). La prise en charge de MTP est alimentée par l’exécuteur NUnit, qui peut exécuter des tests dans tous les contextes (par exemple, les pipelines d’intégration continue (CI), l’interface CLI, l’Explorateur de tests Visual Studio et l’Explorateur de texte VS Code. L'exécuteur NUnit est directement intégré à vos projets de test NUnit, et aucune autre dépendance d'application, telle que vstest.console ou dotnet test, n'est nécessaire pour exécuter vos tests. Toutefois, vous pouvez toujours exécuter vos tests à l’aide de dotnet test.

L’exécuteur NUnit est open source et s’appuie sur Microsoft.Testing.Platform. Vous trouverez du code Microsoft.Testing.Platform dans le référentiel GitHub microsoft/testfx. Le moteur d'exécution NUnit prend en charge la version 5.0 ou supérieure de NUnit3TestAdapter. Pour plus d’informations, consultez NUnit et Microsoft.Testing.Platform

Activer le runner NUnit dans un projet NUnit

Vous pouvez activer le runner NUnit en ajoutant la propriété EnableNUnitRunner et en définissant OutputType sur Exe dans votre fichier projet. Vous devez également vous assurer que vous utilisez NUnit3TestAdapter la version 5.0 ou ultérieure.

Conseil / Astuce

Pour vous assurer que tous les projets de test de votre solution utilisent le pilote NUnit, définissez les propriétés EnableNUnitRunner et TestingPlatformDotnetTestSupport dans le fichier Directory.Build.props au lieu de fichiers projet individuels.

Prenez l’exemple de fichier projet suivant :

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

Configurations et filtres

.runsettings

L’exécuteur NUnit prend en charge le runsettings par l’option --settings en ligne de commande. Les commandes suivantes affichent des exemples.

Utilisation de dotnet run:

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

Utilisation de dotnet exec:

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

- ou -

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

Utilisation de l’exécutable :

Contoso.MyTests.exe --settings config.runsettings

Filtre de tests

Vous pouvez fournir les filtres de tests en toute transparence à l’aide de l’option --filter en ligne de commande. Les commandes suivantes en donnent quelques exemples.

Utilisation de dotnet run:

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

Utilisation de dotnet exec:

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

- ou -

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

Utilisation de l’exécutable :

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