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