web-dev-qa-db-fra.com

Ignorer IgnoreAttribute

Nous avons des tests MSTest qui s'exécutent automatiquement en production horaire. L'un de ces tests est marqué par [Ignore] attribut car il n'est pas encore prêt à l'exécuter dans notre environnement de production.
Maintenant, je veux commencer ce test (uniquement) sur mon environnement local car mon environnement local est prêt pour ce test.
J'essaie d'exécuter ce test en cliquant sur l'icône ReSharper sur le côté gauche du code de test ou en cliquant sur Exécuter les tests sélectionnés dans l'icône Fenêtre Unit Test Sessions et rien ne se passe.

Je le corrige actuellement en commentant le [Ignore] ligne. Mais maintenant, je dois être conscient de supprimer les caractères de commentaire (//) avant l'enregistrement du code.

Existe-t-il une autre façon d'exécuter temporairement un [Ignore] 'test?

39
brgerner

Récemment, lorsque j'ai rencontré des problèmes comme celui-ci, j'ajoute un nouveau Build Configuration au projet Visual Studio nommé quelque chose comme "Local Developer Debug" et j'utilise les paramètres de la configuration de débogage existante. Ensuite, je vais dans "Projet -> Propriétés MyProjectName -> Build", je m'assure que "Local Developer Debug" est la configuration sélectionnée et j'ajoute "LOCALDEVBUILD" à "Symboles de complication conditionnelle". Cela permet d'utiliser des directives de préprocesseur pour "basculer" le code au moment de la compilation:

#if (!LOCALDEVBUILD)
    [Ignore]
#endif

Je ne sais pas si c'est ce que vous cherchez ... mais cela vous permet d'exécuter/d'utiliser du code spécifique en fonction des intentions de la construction (via la configuration de la construction) ... Avec cette méthode, vous pouvez laisser le test ignoré pour des versions plus "officielles", mais exécutez-les quand vous le souhaitez si vous le souhaitez.

37
Skonen

Vous pouvez également utiliser un catégorie de test pour marquer les méthodes de test que vous ne souhaitez pas inclure dans votre test automatisé, par exemple.

[TestCategory("IgnoreOnBuild")]

N'utilisez donc pas l'attribut [Ignorer]. Et combinez cela avec un filtre dans votre définition de build, sous De base -> Test automatisé -> Source de test -> Filtre de cas de test:

TestCategory!=IgnoreOnBuild
31
Lasse Normann

Il semble qu'il existe d'autres façons d'activer/désactiver les tests à l'aide du fichier testrunconfig. Cependant, si vous utilisez IgnoreAttribute, il se compile avec le code et ne peut donc pas être facilement basculé.

De la documentation :

L'attribut Ignorer pour un test unitaire réside dans le fichier source du test unitaire, avec les autres attributs et le code source du test. Cela signifie que si vous désactivez un test unitaire dans la fenêtre Gestionnaire de tests et exécutez le test ultérieurement à l'aide de l'utilitaire de ligne de commande MSTest.exe, le test s'exécute toujours. Mais si vous marquez un test unitaire avec l'attribut Ignore, compilez l'assembly, puis exécutez le test à l'aide de MSTest.exe, le test ne s'exécute pas. Il ne s'exécute pas car l'attribut Ignorer fait désormais partie du test.

3
Davin Tryon