Partager via


Vue d’ensemble du Kit de développement logiciel (SDK) MSTest

Introduit dans .NET 9, MSTest.Sdk est un SDK de projet MSBuild pour la construction d'applications MSTest. Il est possible de créer une application MSTest sans ce SDK, mais le SDK MSTest est :

  • Conçu pour fournir une expérience de première classe pour les tests avec MSTest.
  • Cible recommandée pour la plupart des utilisateurs.
  • Facile à configurer pour d’autres utilisateurs.

Le Kit de développement logiciel (SDK) MSTest découvre et exécute vos tests en utilisant l’exécuteur MSTest.

Vous pouvez activer MSTest.Sdk dans un projet en mettant simplement à jour l’attribut Sdk du nœud Project de votre projet :

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

    <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
    </PropertyGroup>

    <!-- references to the code to test -->

</Project>

Remarque

/3.3.1 est donné en exemple car il s'agit de la première version du SDK, mais il peut être remplacé par n'importe quelle version plus récente.

Pour simplifier la gestion des versions, nous vous recommandons de définir la version du SDK au niveau de la solution à l'aide du fichier global.json. Par exemple, votre Fichier projet ressemblera à ce qui suit :

<Project Sdk="MSTest.Sdk">

    <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
    </PropertyGroup>

    <!-- references to the code to test -->

</Project>

Ensuite, spécifiez la version MSTest.Sdk dans le fichier global.json comme suit :

{
    "msbuild-sdks": {
        "MSTest.Sdk": "3.3.1"
    }
}

Pour obtenir plus d’informations, consultez Utiliser les kits SKD de projet MSBuild.

Lorsque vous build le projet, tous les composants nécessaires sont restaurés et installés en utilisant le workflow NuGet standard défini par votre projet.

Vous n’avez pas besoin d’autre chose pour générer et exécuter vos tests et vous pouvez utiliser les mêmes outils (par exemple, dotnet test ou Visual Studio) utilisés par un projet MSTest « classique ».

Important

En optant pour le MSTest.Sdk, vous acceptez d'utiliser le MSTest runner, y compris avec dotnet test. Cela nécessite de modifier votre CI et les appels CLI locaux, et a également un impact sur les entrées disponibles dans le fichier .runsettings. Vous pouvez utiliser MSTest.Sdk et conserver les anciennes intégrations et outils en changeant l’exécuteur.

Sélectionner l’exécuteur

Par défaut, le SDK MSTest s'appuie sur le programme d'exécution MSTest, mais vous pouvez passer à VSTest en ajoutant la propriété <UseVSTest>true</UseVSTest>.

Étendre l’exécuteur MSTest

Vous pouvez personnaliser MSTest runner l’expérience via un ensemble d’extensions de package NuGet. Pour simplifier et améliorer cette expérience, le SDK MSTest introduit deux fonctionnalités :

Profil de l'exécuteur MSTest

Le concept des profils vous permet de sélectionner l’ensemble par défaut de configurations et d’extensions qui vont être appliquées à votre projet de test.

Vous pouvez définir le profil en utilisant la propriété TestingExtensionsProfile sur l’un des trois profils suivants :

  • Default - Active les extensions recommandées pour cette version de MSTest.SDK. Il s’agit de la valeur par défaut lorsque la propriété n’est pas explicitement définie.
  • None - Aucune extension n’est activée.
  • AllMicrosoft - Active toutes les extensions fournies par Microsoft (y compris les extensions avec une licence restrictive).

Voici un exemple complet en tirant parti du profil None :

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

    <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <TestingExtensionsProfile>None</TestingExtensionsProfile>
    </PropertyGroup>

    <!-- references to the code to test -->

</Project>

Activer ou désactiver des extensions

Les extensions peuvent être activées et désactivées par les propriétés MSBuild avec le modèle Enable[NugetPackageNameWithoutDots].

Par exemple, pour activer l’extension d’image mémoire (package NuGet Microsoft.Testing.Extensions.CrashDump), utilisez l’ensemble de propriétés EnableMicrosoftTestingExtensionsCrashDump suivantes true:

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

<PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <EnableMicrosoftTestingExtensionsCrashDump>true</EnableMicrosoftTestingExtensionsCrashDump>
</PropertyGroup>

<!-- references to the code to test -->

</Project>

Pour une liste de toutes les extensions disponibles, voir Microsoft.Testing.Platform extensions.

Avertissement

Il est important de vérifier les conditions de licence de chaque extension car elles peuvent varier.

Les extensions activées et désactivées sont combinées aux extensions fournies par le profil d’extension que vous avez sélectionné.

Cette propriété peut être utilisée pour activer une extension supplémentaire en plus du profil implicite Default (comme dans l'exemple précédent CrashDumpExtension).

Vous pouvez également désactiver une extension provenant du profil sélectionné. Par exemple, désactivez l'extension MS Code Coverage en réglant <EnableMicrosoftTestingExtensionsCodeCoverage>false</EnableMicrosoftTestingExtensionsCodeCoverage> :

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

    <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <EnableMicrosoftTestingExtensionsCodeCoverage>false</EnableMicrosoftTestingExtensionsCodeCoverage>
    </PropertyGroup>

    <!-- references to the code to test -->

</Project>

Fonctionnalités

En dehors de la sélection du runner et des extensions spécifiques au runner, MSTest.Sdk fournit également des fonctionnalités supplémentaires pour simplifier et améliorer votre expérience de test.

Testez avec .NET Aspire

.NET Aspire est une pile d'opinion, prête pour le cloud, qui permet de construire des applications observables, prêtes pour la production et distribuées. .NET Aspire est fourni par le biais d’une collection de packages NuGet qui gèrent des préoccupations cloud natives spécifiques. Pour obtenir plus d’informations, consultez la documentation .NET Aspire.

Remarque

Cette fonctionnalité est disponible à partir de MSTest.Sdk 3.4.0

En définissant la propriété EnableAspireTesting à true, vous pouvez apporter toutes les dépendances et directives using par défaut dont vous avez besoin pour les tests avec Aspire et MSTest.

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

    <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <EnableAspireTesting>true</EnableAspireTesting>
    </PropertyGroup>

    <!-- references to the code to test -->

</Project>

Testez avec Playwright

Playwright permet d’effectuer des tests fiables de bout en bout pour les applications web modernes. Pour obtenir plus d’informations, consultez la documentation Playwright officielle.

Remarque

Cette fonctionnalité est disponible à partir de MSTest.Sdk 3.4.0

En définissant la propriété EnablePlaywright à true, vous pouvez apporter toutes les dépendances et directives using par défaut dont vous avez besoin pour les tests avec Playwright et MSTest.

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

    <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <EnablePlaywright>true</EnablePlaywright>
    </PropertyGroup>

    <!-- references to the code to test -->

</Project>

Migrer vers le SDK MSTest

Tenez compte des étapes suivantes qui sont requises pour migrer vers le kit de développement logiciel (SDK) MSTest.

Mettez à jour votre projet

Lors de la migration d’un projet de test MSTest existant vers le Kit de développement logiciel (SDK) MSTest, commencez par remplacer l’Sdk="Microsoft.NET.Sdk"entrée au sommet de votre projet de test par Sdk="MSTest.Sdk"

- Sdk="Microsoft.NET.Sdk"
+ Sdk="MSTest.Sdk"

Ajoutez la version à votre global.json :

{
    "msbuild-sdks": {
        "MSTest.Sdk": "3.3.1"
    }
}

Vous pouvez ensuite commencer à simplifier votre projet.

Supprimez les propriétés par défaut :

- <EnableMSTestRunner>true</EnableMSTestRunner>
- <OutputType>Exe</OutputType>
- <IsPackable>false</IsPackable>
- <IsTestProject>true</IsTestProject>

Supprimer les références de package par défaut :

- <PackageReference Include="MSTest"
- <PackageReference Include="MSTest.TestFramework"
- <PackageReference Include="MSTest.TestAdapter"
- <PackageReference Include="MSTest.Analyzers"
- <PackageReference Include="Microsoft.NET.Test.Sdk"

Enfin, en fonction du profil des extensions que vous utilisez, vous pouvez également supprimer certains des packages Microsoft.Testing.Extensions.*.

Mettre à jour votre CI

Une fois que vous avez mis à jour vos projets, si vous utilisez MSTest runner (par défaut) et si vous comptez sur dotnet test pour exécuter vos tests, vous devez mettre à jour votre configuration CI. Pour plus d'informations et pour vous aider à comprendre tous les changements nécessaires, consultez intégration des tests dotnet.

Voici un exemple de mise à jour lors de l’utilisation de la tâche DotNetCoreCLI dans Azure DevOps :

\- task: DotNetCoreCLI@2
  inputs:
    command: 'test'
    projects: '**/**.sln'
-    arguments: '--configuration Release'
+    arguments: '--configuration Release -p:TestingPlatformCommandLineArguments="--report-trx --results-directory $(Agent.TempDirectory) --coverage"'

Voir aussi