Partager via


Résolution des problèmes de Microsoft.Testing.Platform

Cet article contient des conseils de résolution des problèmes pour Microsoft.Testing.Platform.

Codes de sortie

Microsoft.Testing.Platform utilise des codes de sortie connus pour communiquer les erreurs de test ou d’application. Les codes de sortie commencent à 0 et ne sont pas négatifs.

Code de sortie Détails
0 Le 0 code de sortie indique la réussite. Tous les tests qui ont été choisis ont été exécutés jusqu'à leur terme sans qu'aucune erreur ne soit détectée.
1 Le 1 code de sortie indique des erreurs inconnues et agit comme un catch all. Pour trouver des informations et des détails supplémentaires sur l’erreur, recherchez dans la sortie.
2 Un code de sortie de 2 est utilisé pour indiquer qu’il y avait au moins un échec de test.
3 Le code 3 de sortie indique que la session de test a été abandonnée. Une session peut être abandonnée à l’aide de Ctrl+C, par exemple.
4 Le code 4 de sortie indique que la configuration des extensions utilisées n’est pas valide et que la session de tests ne peut pas s’exécuter.
5 Le code 5 de sortie indique que les arguments de ligne de commande passés à l’application de test n’étaient pas valides.
6 (n’est plus utilisé) Le code 6 de sortie n’est plus produit par la plateforme ; il indique précédemment que la session de test utilise une fonctionnalité non implémentée.
7 Le code 7 de sortie indique qu’une session de test n’a pas pu se terminer correctement et qu’elle a probablement été bloquée. Il est possible qu’il s’agit d’une session de test exécutée via le point d’extension d’un contrôleur de test.
8 Le code 8 de sortie indique que la session de test a exécuté zéro test.
9 Le code 9 de sortie indique que la stratégie d’exécution minimale pour les tests exécutés a été violée.
10 Le code 10 de sortie indique que l’adaptateur de test, Testing.Platform Test Framework, MSTest, NUnit ou xUnit, n’a pas pu exécuter de tests pour une raison d’infrastructure non liée à l’auto du test. Un exemple ne parvient pas à créer un élément requis par les tests.
11 Le code 11 de sortie indique que le processus de test s’arrête si le processus dépendant se termine.
12 Le code 12 de sortie indique que la session de test n’a pas pu s’exécuter, car le client ne prend pas en charge les versions de protocole prises en charge.
13 Le code 13 de sortie indique que la session de test a été arrêtée en raison d’atteindre le nombre spécifié de tests ayant échoué au maximum à l’aide --maximum-failed-tests de l’option de ligne de commande. Pour plus d’informations, consultez la section Options dans les options de l’interface CLI Microsoft.Testing.Platform

Pour activer la journalisation détaillée et résoudre les problèmes, consultez journalisation des diagnostics.

Ignorer des codes de sortie spécifiques

Microsoft.Testing.Platform est conçu pour être strict par défaut, mais permet la configuration. Par conséquent, il est possible pour les utilisateurs de décider quels codes de sortie doivent être ignorés (un code de sortie de 0 sera retourné au lieu du code de sortie d’origine).

Pour ignorer des codes de sortie spécifiques, utilisez l’option --ignore-exit-code de ligne de commande ou la variable d’environnement TESTINGPLATFORM_EXITCODE_IGNORE . Le format valide accepté est une liste séparée par des points-virgules de codes de sortie à ignorer (par exemple). --ignore-exit-code 2;3;8 Un scénario courant consiste à considérer que les échecs de test ne doivent pas entraîner de code de sortie différent de zéro (qui correspond à l’ignorance du code 2de sortie).

Journalisation de diagnostic

La plateforme fournit une journalisation de diagnostic intégrée pour vous aider à résoudre les problèmes d’exécution des tests. Vous pouvez activer la journalisation des diagnostics via des options de ligne de commande ou des variables d’environnement.

Options de ligne de commande

Les options de plateforme suivantes fournissent des informations utiles pour résoudre les problèmes de vos applications de test :

  • --info
  • --diagnostic
  • --diagnostic-synchronous-write
  • --diagnostic-verbosity
  • --diagnostic-file-prefix
  • --diagnostic-output-directory

Variables d'environnement

Vous pouvez également activer les journaux de diagnostic à l’aide des variables d’environnement :

Nom de la variable d’environnement Descriptif
TESTINGPLATFORM_DIAGNOSTIC Si la valeur est définie 1, active la journalisation des diagnostics.
TESTINGPLATFORM_DIAGNOSTIC_VERBOSITY Définit le niveau de verbosité. Les valeurs disponibles sont Trace, Debug, Information, Warning, Error ou Critical.
TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_DIRECTORY Le répertoire de sortie de la journalisation des diagnostics, s’il n’est pas spécifié, le fichier est généré dans le répertoire TestResults par défaut.
TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_FILEPREFIX Préfixe du nom de fichier journal. La valeur par défaut est "log_".
TESTINGPLATFORM_DIAGNOSTIC_FILELOGGER_SYNCHRONOUSWRITE Permet d'imposer au journalisateur de fichiers intégré d'écrire les logs synchronement. Utile pour les scénarios où vous ne souhaitez perdre aucune entrée de journal (si le processus se bloque). Cela ralentit l’exécution de tests.

Note

Les variables d’environnement sont prioritaires sur les arguments de ligne de commande.

Résoudre les erreurs de configuration

Microsoft.Testing.Platform.MSBuild

Voici les erreurs de configuration courantes liées à Microsoft.Testing.Platform.MSBuild.

erreur CS8892 : La méthode « TestingPlatformEntryPoint.Main(string[]) » n’est pas utilisée comme point d’entrée, car un point d’entrée synchrone « Program.Main(string[]) » a été trouvé.

La définition manuelle d’un point d’entrée (Main) dans un projet de test ou le référencement d’un projet de test à partir d’une application qui a déjà un point d’entrée entraîne un conflit avec le point d’entrée généré par Microsoft.Testing.Platform. Pour éviter ce problème, effectuez l’une des étapes suivantes :

  • Supprimez votre point d’entrée défini manuellement, généralement Main méthode dans Program.cs, et laissez la plateforme de test en générer une pour vous.

  • Désactivez la génération du point d’entrée en définissant la propriété MSBuild <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>.

  • Désactivez complètement la dépendance transitive à Microsoft.Testing.Platform.MSBuild en définissant la propriété MSBuild <IsTestingPlatformApplication>false</IsTestingPlatformApplication> dans le projet qui fait référence à un projet de test. Cela est nécessaire lorsque vous référencez un projet de test à partir d’un projet non test, par exemple une application console qui fait référence à une application de test.

Microsoft.Testing.Extensions.Fakes

Erreur Fakes : Impossible de résoudre le chemin du profileur à partir des variables d'environnement COR_PROFILER_PATH et COR_PROFILER.

Cette erreur peut se produire si tous les assemblys Fakes ne sont pas présents dans le dossier bin.

  • Vérifiez que le projet utilise MSTest.SDK ou référence Microsoft.Testing.Extensions.Fakes.
  • Pour les projets .NET Framework, évitez de définir <PlatformTarget>AnyCPU</PlatformTarget> car cela entraîne NuGet à ne pas copier tous les fichiers dans le dossier bin.