Utiliser Microsoft.Testing.Platform avec la commande dotnet test
Cet article décrit comment utiliser dotnet test
pour exécuter des tests lors de l’utilisation de Microsoft.Testing.Platform
, ainsi que les différentes options disponibles pour configurer la sortie MSBuild produite lors de l’exécution de tests via Microsoft.Testing.Platform.
Cet article explique comment utiliser dotnet test
pour exécuter tous les tests dans une solution (*.sln) qui utilise Microsoft.Testing.Platform
.
Intégration de dotnet test
La commande dotnet test est un moyen d’exécuter des tests à partir de solutions, de projets ou d’assemblages déjà générés. Microsoft.Testing.Platform se connecte à cette infrastructure pour fournir un moyen unifié d’exécuter des tests, en particulier lors de la migration de VSTest vers Microsoft.Testing.Platform
.
Intégration dotnet test
- Mode VSTest
Microsoft.Testing.Platform
fournit une couche de compatibilité (Pont VSTest) pour utiliser dotnet test
en toute transparence.
Les tests peuvent être lancés en exécutant :
dotnet test
Cette couche exécute un test via VSTest et s’intègre avec lui au niveau de l’adaptateur d’infrastructure de test VSTest.
dotnet test
– Mode Microsoft.Testing.Platform
Par défaut, dotnet test
utilise le comportement VSTest pour exécuter des tests. Vous pouvez activer la prise en charge de Microsoft.Testing.Platform
dans dotnet test
en spécifiant le paramètre <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
dans votre fichier projet.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
<OutputType>Exe</OutputType>
<EnableMSTestRunner>true</EnableMSTestRunner>
<!-- Add this to your project file. -->
<TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
</PropertyGroup>
<!-- ... -->
</Project>
Remarque
Il est vivement recommandé de définir la propriété TestingPlatformDotnetTestSupport
dans Directory.Build.props
. De cette façon, vous n’avez pas besoin de l’ajouter à chaque fichier de projet de test, et vous ne risquez pas d’introduire un nouveau projet qui ne définit pas cette propriété, ce qui pourrait aboutir à une solution où certains projets utilisent VSTest, tandis que d’autres utilisent Microsoft.Testing.Platform. Cela peut ne pas fonctionner correctement et constitue un scénario non pris en charge.
Important
Malgré TestingPlatformDotnetTestSupport
défini sur true
, la plupart des options de ligne de commande définies dans test dotnet restent orientées VSTest et n’affectent pas les tests basés sur Microsoft.Testing.Platform
. Pour fournir des arguments à Microsoft.Testing.Platform
, vous devez utiliser l'une des méthodes décrites dans Arguments de ligne de commande Microsoft.Testing.Platform avec dotnet test.
La liste ci-dessous décrit toutes les options de ligne de commande dotnet test
prises en charge par Microsoft.Testing.Platform
:
-a|--arch <ARCHITECTURE>
--artifacts-path <ARTIFACTS_DIR>
-c|--configuration <CONFIGURATION>
-f|--framework <FRAMEWORK>
-e|--environment <NAME="VALUE">
--interactive
--no-build
--nologo
--no-restore
-o|--output <OUTPUT_DIRECTORY>
--os <OS>
-r|--runtime <RUNTIME_IDENTIFIER>
-v|--verbosity <LEVEL>
Ces arguments sont pris en charge, car ils sont liés à l’étape de génération et sont indépendants de la plateforme de test utilisée.
Arguments de ligne de commande Microsoft.Testing.Platform
avec dotnet test
Vous pouvez fournir des arguments utilisés pour appeler l’application de test de l’une des manières suivantes :
Microsoft.Testing.Platform
À compter de la version 1.4 (incluse avec MSTest version 3.6), vous pouvez ajouter des options après le double tiret--
sur la ligne de commande :dotnet test -- --minimum-expected-tests 10
En utilisant la propriété
TestingPlatformCommandLineArguments
MSBuild sur la ligne de commande :dotnet test -p:TestingPlatformCommandLineArguments="--minimum-expected-tests 10"
Ou dans le fichier de projet :
<PropertyGroup> ... <TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments> </PropertyGroup>
Options MSBuild supplémentaires
L'intégration MSBuild fournit des options qui peuvent être spécifiées dans le fichier de projet ou par le biais de propriétés globales sur la ligne de commande, telles que -p:TestingPlatformShowTestsFailure=true
.
Les options suivantes sont disponibles :
Afficher l’échec par test
Par défaut, les échecs des tests sont résumés dans un fichier .log, et un seul échec par projet de test est signalé à MSBuild.
Pour afficher les erreurs par test échoué, spécifiez -p:TestingPlatformShowTestsFailure=true
sur la ligne de commande, ou ajoutez la propriété <TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure>
à votre fichier de projet.
Dans la ligne de commande :
dotnet test -p:TestingPlatformShowTestsFailure=true
Ou dans le fichier de projet :
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
<OutputType>Exe</OutputType>
<EnableMSTestRunner>true</EnableMSTestRunner>
<TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
<!-- Add this to your project file. -->
<TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure>
</PropertyGroup>
<!-- ... -->
</Project>
Afficher la sortie complète de la plateforme
Par défaut, toutes les sorties de console écrites par l’exécutable de test sous-jacent sont capturées et masquées pour l’utilisateur. Cela inclut la bannière, les informations de version et les informations de test mises en forme.
Pour afficher ces informations avec la sortie MSBuild, utilisez <TestingPlatformCaptureOutput>false</TestingPlatformCaptureOutput>
.
Cette option n’a pas d’impact sur la façon dont l’infrastructure de test capture la sortie utilisateur écrite par Console.WriteLine
ou d’autres façons similaires d’écrire dans la console.
Dans la ligne de commande :
dotnet test -p:TestingPlatformCaptureOutput=false
Ou dans le fichier de projet :
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
<OutputType>Exe</OutputType>
<EnableMSTestRunner>true</EnableMSTestRunner>
<TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
<!-- Add this to your project file. -->
<TestingPlatformCaptureOutput>false</TestingPlatformCaptureOutput>
</PropertyGroup>
<!-- ... -->
</Project>
Important
Tous les exemples ci-dessus ajoutent des propriétés telles que EnableMSTestRunner
, TestingPlatformDotnetTestSupport
et TestingPlatformCaptureOutput
dans le fichier csproj. Toutefois, il est vivement recommandé de définir ces propriétés dans Directory.Build.props
. De cette façon, vous n'avez pas besoin de l'ajouter à chaque fichier de test de projet, et vous ne risquez pas d'introduire un nouveau projet qui ne définit pas ces propriétés, ce qui pourrait aboutir à une situation où certains projets utilisent VSTest tandis que d'autres utilisent Microsoft.Testing.Platform, ce qui peut ne pas fonctionner correctement et constitue un scénario non pris en charge.