Partager via


Exécuter des tests avec MSTest

Vous pouvez exécuter des tests MSTest de plusieurs façons en fonction de vos besoins. Vous pouvez exécuter des tests à partir d’un IDE (par exemple, Visual Studio, Visual Studio Code ou JetBrains Rider), à partir de la ligne de commande ou à partir d’un service CI (comme GitHub Actions ou Azure DevOps).

Historiquement, MSTest s’appuie sur VSTest pour exécuter des tests dans tous les contextes, mais à compter de la version 3.2.0, MSTest a son propre exécuteur de test. Ce nouvel exécuteur, plus léger et plus rapide que VSTest, est recommandé pour exécuter des tests MSTest.

VSTest vs Microsoft.Testing.Platform (MTP)

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 aucune autre dépendance d'application, comme vstest.console ou dotnet test, n'est nécessaire pour exécuter vos tests. Toutefois, vous pouvez toujours exécuter vos tests à l’aide dotnet testde .

L’exécuteur MSTest est open source et s’appuie sur la Microsoft.Testing.Platform bibliothèque. Vous trouverez Microsoft.Testing.Platform du code dans le dépôt GitHub microsoft/testfx . L’exécuteur MSTest est fourni avec MSTest in 3.2.0 ou une version plus récente.

Activer Microsoft.Testing.Platform dans un projet MSTest

Il est recommandé d’utiliser le Kit de développement logiciel (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/4.1.0">

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

</Project>

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

Considérez 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>net10.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="4.1.0" />
  </ItemGroup>

</Project>

Conseil / Astuce

Pour vous assurer que tous les projets de test de votre solution utilisent le moteur de test MSTest, définissez les propriétés EnableMSTestRunner et TestingPlatformDotnetTestSupport dans le fichier Directory.Build.props plutôt que dans les fichiers projet individuels.

Configurations et filtres

.runsettings

Microsoft.Testing.Platform prend en charge les runsettings via l’option --settingsde ligne de commande . 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 le filtre de tests en toute transparence à l’aide de l’option --filterde ligne de commande. Les commandes suivantes présentent 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"

Voir aussi