Partager via


Test avec « dotnet test »

Cet article fournit des informations sur la dotnet test commande CLI, y compris sa compatibilité avec VSTest et Microsoft.Testing.Platform (MTP).

La dotnet test commande fonctionne en deux modes principaux :

  • Mode VSTest : il s’agit du mode par défaut pour dotnet test lequel il s’agissait du seul mode disponible avant le Kit de développement logiciel (SDK) .NET 10. Il est principalement conçu pour VSTest, mais peut également exécuter le test Microsoft.Testing.Platform via le package NuGet Microsoft.Testing.Platform.MSBuild .
  • Mode Microsoft.Testing.Platform : introduit avec le Kit de développement logiciel (SDK) .NET 10, ce mode prend exclusivement en charge les applications de test créées avec Microsoft.Testing.Platform.

Conseil / Astuce

Pour la référence de l'interface en ligne de commande, consultez dotnet test.

Mode de VSTest pour dotnet test

Pendant longtemps, VSTest était la seule plateforme de test dans .NET. Par conséquent, dotnet test a été conçu exclusivement pour VSTest, avec toutes les options de ligne de commande adaptées à VSTest.

Le processus implique l’appel de la VSTest cible MSBuild, qui déclenche l’exécution d’autres cibles internes et, finalement, l’exécution de vstest.console. Toutes les dotnet test options de ligne de commande sont traduites en leurs équivalents dans vstest.console.

Exécuter des projets MTP avec le mode VSTest

dotnet test a été conçu pour exécuter des projets VSTest en mode VSTest. Cependant, vous pouvez exécuter des projets MTP en mode dotnet test VSTest en utilisant le package Microsoft.Testing.Platform.MSBuild. Du point de vue de l'utilisateur, cette prise en charge est activée en définissant la propriété TestingPlatformDotnetTestSupport MSBuild sur true (par défaut pour des raisons de compatibilité descendante, c'est false). Lorsque cette propriété est définie sur true, Microsoft.Testing.Platform.MSBuild modifie le comportement cible VSTest, pour le rediriger vers l'appel InvokeTestingPlatform. InvokeTestingPlatform est une cible MSBuild incluse dans Microsoft.Testing.Platform.MSBuild qui est responsable de l’exécution correcte des applications de test MTP en tant qu’exécutables. Les options de ligne de commande spécifiques à VSTest, telles que --logger, sont ignorées silencieusement dans ce mode. Pour inclure des arguments spécifiques à MTP, tels que --report-trx, vous devez les ajouter après un autre --. Par exemple : dotnet test -- --report-trx.

Remarque

MSTest et NUnit utilisent le package Microsoft.Testing.Extensions.VSTestBridge . En définissant EnableMSTestRunner ou EnableNUnitRunner (qui active Microsoft.Testing.Platform), votre projet de test prend en charge VSTest et Microsoft.Testing.Platform. Dans ce scénario, si vous utilisez le mode VSTest et que vous ne définissez pas dotnet test sur true, vous exécutez essentiellement entièrement avec VSTest, comme si TestingPlatformDotnetTestSupport et EnableMSTestRunner n'étaient pas définis sur true.

Remarque

Il est vivement recommandé de définir la TestingPlatformDotnetTestSupport propriété dans Directory.Build.props. Cela garantit que vous n’avez pas besoin de l’ajouter à chaque fichier projet de test individuellement. En outre, il empêche l’introduction d’un nouveau projet de test qui ne définit pas cette propriété, ce qui peut entraîner une solution où certains projets utilisent VSTest, tandis que d’autres utilisent Microsoft.Testing.Platform. Cette configuration mixte peut ne pas fonctionner correctement et est un scénario non pris en charge.

La liste suivante décrit les options de ligne de commande de dotnet test en mode VSTest qui sont prises en charge par Microsoft.Testing.Platform. Ces options sont spécifiques au processus de génération et ne sont pas transmises à VSTest, c’est pourquoi elles fonctionnent avec MTP.

  • -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>

Conseil / Astuce

Vous pouvez personnaliser les arguments de ligne de commande de votre application de test via TestingPlatformCommandLineArguments la propriété MSBuild :

<PropertyGroup>
  ...
  <TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments>
</PropertyGroup>

Pour plus d’informations spécifiques à l’exécution de projets MTP en mode VSTest, consultez dotnet testl'utilisation de Microsoft.Testing.Platform avec le mode VSTest de dotnet test.

Détails techniques avancés

En dotnet test mode VSTest, -- est utilisé pour indiquer les arguments RunSettings. Initialement, dotnet test a été conçu pour passer ces arguments en tant que propriété MSBuild appelée VSTestCLIRunSettings. Par conséquent, lors de l’exécution d’applications de test MTP en mode VSTest, nous réaffectons la valeur pour représenter les « arguments d’application VSTestCLIRunSettings ».

Mélange de VSTest et Microsoft.Testing.Platform (MTP)

Lors de l’exécution dotnet test en mode VSTest, il est recommandé d’éviter d’inclure VSTest et Microsoft.Testing.Platform dans la même solution.

Ce scénario n’est pas officiellement pris en charge et vous devez connaître les éléments suivants :

  • Les options de ligne de commande spécifiques à VSTest s’appliquent uniquement aux projets VSTest et non aux applications de test MTP.
  • Les options de ligne de commande spécifiques à MTP fournies après -- seront traitées comme des arguments RunSettings pour les projets VSTest.

Points clés à prendre

  • Pour exécuter des applications de test MTP en dotnet test mode VSTest, vous devez utiliser Microsoft.Testing.Platform.MSBuild, passer des options de ligne de commande spécifiques à MTP après l’extra --et définir TestingPlatformDotnetTestSupport sur true.
  • Les options de ligne de commande liées à VSTest sont ignorées de manière silencieuse.

En raison de ces problèmes, .NET a introduit un nouveau dotnet test mode spécifiquement conçu pour MTP. Nous encourageons les utilisateurs MTP à passer du mode VSTest dotnet test au nouveau mode avec le Kit de développement logiciel (SDK) .NET 10.

Mode Microsoft.Testing.Platform (MTP) de dotnet test

Pour résoudre les problèmes rencontrés lors de l’exécution dotnet test avec MTP en mode VSTest, .NET a introduit un nouveau mode dans le SDK .NET 10 spécifiquement conçu pour MTP.

Pour activer ce mode, ajoutez un dotnet.config fichier à la racine du référentiel ou de la solution.

[dotnet.test.runner]
name = "Microsoft.Testing.Platform"

Importante

L’expérience dotnet test pour MTP n’est prise en charge que dans la Microsoft.Testing.Platform version 1.7 et ultérieure.

Étant donné que ce mode est spécifiquement conçu pour Microsoft.Testing.Platform, ni TestingPlatformDotnetTestSupport ni l'ajout de -- ne sont nécessaires.

Importante

Ce mode est uniquement compatible avec Microsoft.Testing.Platform version 1.7.0 et ultérieure.

Importante

Si votre projet de test prend en charge VSTest mais ne prend pas en charge MTP, une erreur est générée.

Conseil / Astuce

Vous pouvez personnaliser les arguments de ligne de commande de votre application de test via TestingPlatformCommandLineArguments la propriété MSBuild :

<PropertyGroup>
  ...
  <TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments>
</PropertyGroup>