Partager via


Configuration du Kit de développement logiciel (SDK) MSTest

Cet article décrit les options de configuration avancées pour MSTest.Sdk. Pour une configuration de base et mise en route, consultez Mise en route avec MSTest.

Importante

Par défaut, MSTest.Sdk utilise l’exécuteur MSTest avec Microsoft.Testing.Platform, y compris avec le test dotnet. Cela nécessite la modification de vos appels CI et CLI locaux, et impacte également les entrées disponibles des .runsettings. Vous pouvez conserver les anciennes intégrations et outils en basculant vers VSTest.

MsTest.Sdk définit EnableMSTestRunner et TestingPlatformDotnetTestSupport a la valeur true par défaut. Pour plus d’informations sur dotnet test et ses différents modes, consultez Test avec dotnet test.

Bibliothèques d’assistance utilitaire de test

Si le project qui utilise MSTest.Sdk est destiné à être une bibliothèque d'assistance utilitaire de test et ne contient pas de tests exécutables, le project doit avoir <IsTestApplication>false</IsTestApplication>.

Sélectionner le coureur

Par défaut, le SDK MSTest s’appuie sur Microsoft.Testing.Platform, mais vous pouvez basculer vers VSTest en ajoutant la propriété <UseVSTest>true</UseVSTest>.

Étendre Microsoft.Testing.Platform

Vous pouvez personnaliser Microsoft.Testing.Platform 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 Microsoft.Testing.Platform

Le concept de profiles vous permet de sélectionner l’ensemble par défaut de configurations et d’extensions qui seront appliquées à votre project de test.

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

Voici un exemple complet en tirant parti du profil None :

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

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

</Project>
Extension/Profil Aucun Par défaut AllMicrosoft
Couverture du code ✔️ ✔️
Vidage sur incident ✔️
Faux ✔️¹
Vidage sur blocage ✔️
Hot Reload ✔️
réessayer ✔️
Trx ✔️ ✔️
AzureDevOpsReport ✔️²

¹ MSTest.Sdk 3.7.0+ ² MSTest.Sdk 3.11.0+

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/4.1.0">

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

</Project>

Pour obtenir la liste de toutes les extensions disponibles, consultez les fonctionnalités de Microsoft.Testing.Platform.

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/4.1.0">

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

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

Tester avec Aspire

Aspire est une pile avisée et prête pour le cloud pour la création d’applications observables, prêtes pour la production et distribuées. Aspire est livré par le biais d’une collection de packages NuGet qui gèrent des préoccupations cloud natives spécifiques. Pour plus d’informations, consultez la documentation 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/4.1.0">

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

</Project>

Testez avec Playwright

Playwright permet des tests de bout en bout fiables pour les web apps 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/4.1.0">

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

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

Lors de la migration d’un project de test MSTest existant vers le KIT SDK MSTest, commencez par remplacer l’entrée Sdk="Microsoft.NET.Sdk" en haut de votre project de test par Sdk="MSTest.Sdk"

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

Ajoutez la version à votre global.json :

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

Vous pouvez ensuite commencer à simplifier votre project.

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 Microsoft.Testing.Platform (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.

Si vous utilisez le mode VSTest de dotnet test, 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 -- --report-trx --results-directory $(Agent.TempDirectory) --coverage'

Limitations connues

Les kits SDK MSBuild fournis par NuGet (y compris MSTest.Sdk) ont prise en charge des outils délimités lorsqu'il s'agit de mettre à jour leur version, ce qui signifie que la mise à jour NuGet habituelle et l'interface utilisateur Visual Studio pour la gestion des packages NuGet ne fonctionne pas comme prévu. Vous devez mettre à jour manuellement la version dans le fichier global.json et dans le fichier project. (Cela s’applique même si vous utilisez Dependabot en raison de problèmes dependabot-core#12824 et dependabot-core#8615.)

Voir aussi