Partager via


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

MSTest 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 MSTest, 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 MSTest est incorporé directement dans vos projets de test MSTest, et il n’existe aucune autre dépendance d’application,telles que vstest.console ou dotnet test, nécessaire pour exécuter vos tests. Toutefois, vous pouvez toujours exécuter vos tests à l’aide de dotnet test.

L’exécuteur MSTest est open source et s’appuie sur la bibliothèque Microsoft.Testing.Platform. Vous trouverez du code Microsoft.Testing.Platform dans le référentiel GitHub microsoft/testfx. L’exécuteur MSTest est fourni avec MSTest in 3.2.0 ou version ultérieure.

Activer Microsoft.Testing.Platform dans un projet MSTest

Il est recommandé d’utiliser SDK MSTest car il simplifie considérablement la configuration et la mise à jour du projet, et garantit un alignement approprié des versions de la plateforme (Microsoft.Testing.Platform) et de ses extensions.

Lorsque vous utilisez MSTest SDK, par défaut, vous avez choisi d’utiliser Microsoft.Testing.Platform.

<Project Sdk="MSTest.Sdk/3.8.2">

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

</Project>

Sinon, vous pouvez activer l’exécuteur MSTest en ajoutant la propriété EnableMSTestRunner et le paramètre OutputType à Exe dans votre fichier projet. Vous devez également vous assurer d’utiliser MSTest 3.2.0 ou version ultérieure. Nous vous recommandons vivement de mettre à jour la dernière version MSTest disponible.

Prenez l’exemple de fichier projet suivant :

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <!-- Enable Microsoft.Testing.Platform, this is an opt-in feature -->
    <EnableMSTestRunner>true</EnableMSTestRunner>
    <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>
    <!--
      MSTest meta package is the recommended way to reference MSTest.
      It's equivalent to referencing:
          Microsoft.NET.Test.Sdk
          MSTest.TestAdapter
          MSTest.TestFramework
          MSTest.Analyzers
      Starting with 3.8, it also includes:
          Microsoft.Testing.Extensions.TrxReport
          Microsoft.Testing.Extensions.CodeCoverage
    -->
    <PackageReference Include="MSTest" Version="3.8.0" />

    <!--
      Coverlet collector isn't compatible with Microsoft.Testing.Platform, 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>

Conseil

Pour vous assurer que tous les projets de test de votre solution utilisent l’exécuteur MSTest, définissez les propriétés EnableMSTestRunner et TestingPlatformDotnetTestSupport dans fichier Directory.Build.props au lieu de fichiers projet individuels.

Configurations et filtres

.runsettings

Microsoft.Testing.Platform prend en charge le runsettings par l’option de ligne de commande --settings. Pour obtenir la liste complète des entrées MSTest prises en charge, consultez Configurer MSTest : Runsettings. Les commandes suivantes présentent différents exemples d’utilisation.

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"