Partage via


Configurer l’architecture de processus pour un test unitaire

Cet article fournit des informations sur l’architecture de processus utilisée pour exécuter des tests unitaires, comment définir l’architecture de processus et comment exécuter des tests unitaires en tant que processus 64 bits.

Cet article fournit des informations sur la définition de l’architecture de processus pour les tests unitaires et sur l’exécution de tests unitaires en tant que processus 64 bits.

Configurer l’architecture de processus pour les projets MSTest

Pour les projets MSTest utilisant Visual Studio Testing Platform (VSTest) comme exécuteur de test, la plateforme cible par défaut (architecture de processus) correspond à l’architecture du système d’exploitation. Vous pouvez remplacer ce comportement pour les projets définis sur Any CPU en tant que plateforme cible en utilisant soit les Paramètres de l’Explorateur de tests , comme montré dans l’image suivante, soit le menu Test.

Capture d’écran montrant le menu permettant de sélectionner l’architecture du processeur pour AnyCPU.

Dans le menu Test, sélectionnez Architecture du processeur pour les projets AnyCPU.

Pour les projets utilisant MSTest comme exécuteur de test au lieu de VSTest, l’architecture est déterminée strictement par msBuild et les règles d’exécution. Les exécutables sont générés en fonction de l’architecture préférée spécifiée dans les paramètres MSBuild/runtime. Vous pouvez ajuster cette préférence à l’aide des propriétés MSBuild (par exemple, PreferNativeArm64), mais le paramètre Architecture du processeur pour les projets AnyCPU ne peut pas être utilisé pour modifier l’architecture de ces projets.

Remarque

Vous pouvez définir l’exécuteur de test lorsque vous créez un projet de test unitaire à l’aide du modèle de projet MSTest ou à l’aide des propriétés MSBuild. Pour plus d’informations sur la différence entre les outils de test MSTest et VSTest, consultez comparaison entre Microsoft.Testing.Platform et VSTest.

PreferNativeArm64 (MSTest)

Lorsque vous utilisez la propriété MSBuild PreferNativeArm64, le projet préfère s’exécuter en mode natif sur l’architecture ARM64 s’il est disponible. Cette propriété s’applique aux projets qui génèrent des exécutables et suivent les règles d’exécution MSBuild. Ce paramètre est ignoré pour les exécuteurs de test VSTest (Visual Studio Test Platform) et s’applique uniquement aux projets MSTest avec MSTest configurés comme exécuteur de test.

Exécuter un test unitaire en tant que processus 64 bits

Si vous disposez d’une machine 64 bits, vous pouvez exécuter des tests unitaires et capturer des informations de couverture du code en tant que processus 64 bits.

Pour exécuter un test unitaire en tant que processus 64 bits :

  1. Si votre code ou vos tests ont été compilés en tant que 32-bit/x86, mais que vous souhaitez maintenant les exécuter en tant que processus 64-bit, recompilez-les en tant que Any CPU.

    Conseil

    Pour une flexibilité maximale, compilez vos projets de test avec la configuration tout processeur. Vous pouvez ensuite exécuter sur les agents 32 bits et 64 bits. Il n’existe aucun avantage à compiler des projets de test avec la configuration 64 bits, sauf si vous appelez du code supporté uniquement sur 64 bits.

  2. Définissez les tests unitaires à exécuter en tant que processus 64 bits.

    Dans le menu Visual Studio, choisissez Test, puis choisissez Architecture du processeur pour les projets AnyCPU. Choisissez x64 pour exécuter les tests en tant que processus 64 bits.

    ou

    Spécifiez <TargetPlatform>x64</TargetPlatform> dans un fichier .runsettings. L’avantage de cette méthode est que vous pouvez spécifier des groupes de paramètres dans différents fichiers et basculer rapidement entre différents paramètres. Vous pouvez également copier des paramètres entre les solutions. Pour plus d’informations, consultez Configurer des tests unitaires à l’aide d’un fichier .runsettings.

    Remarque

    L’architecture de processeur pour les projets anyCPU n’est pas prise en charge dans un projet MSTest si vous définissez MSTest comme exécuteur de test au lieu de VSTest.