2009-07-24 6 views
2

J'ai récemment rencontré des incohérences dans l'exécution de tests unitaires dans VS2008 par rapport aux mêmes tests unitaires effectués avec mstest sur la ligne de commande.Exécution de tests unitaires à partir de VS2008 vs utilisation de mstest sur la ligne de commande

Mon scénario est un peu avancé, donc j'ai probablement atteint quelques sommets. J'ai de nombreux tests unitaires pilotés par les données qui s'exécutent sur la même DataSource. J'aime aussi expérimenter avec PostSharp. J'ai donc écrit un aspect PostSharp - TestDataSource - que j'applique à un type de test unitaire, pas aux méthodes de test unitaires. Lorsque le type est généré, cet aspect indique à PostSharp d'attacher l'attribut DataSource à chaque méthode de test unitaire du type.

L'examen de l'assemblage construit dans Reflector montre que chaque méthode de test est en effet associée à l'attribut DataSource correct. L'exécution des tests avec mstest sur la ligne de commande se comporte comme prévu - chaque test est exécuté sur la source de données spécifiée. Toutefois, exécuter exactement les mêmes tests unitaires dans VS2008 ne parvient pas à trouver la source de données. C'est comme si VS2008 ignorait l'assemblage construit et regardait le code source, ce qui, bien sûr, ne semble pas être un test piloté par les données, car l'attribut DataSource est injecté pendant la construction.

Il n'y a aucun problème avec les éléments déployés. En attachant manuellement le DataSource aux tests, VS2008 les exécute avec bonheur.

Des idées?

Répondre

0

Si vous placez un point d'arrêt dans votre test et inspectez la liste des modules chargés, vous devez voir quel est le chemin exact de l'assembly que vous déboguez. Est-ce le attendu (dans bin \ Debug)? Si vous ouvrez ce fichier en utilisant Reflector lorsque le débogueur est en cours d'exécution, voyez-vous du contenu PostSharp à l'intérieur?

Ce qui est étrange est qu'une partie des tests unitaires PostSharp sont écrites pour MSTest et ils courent à partir de Visual Studio sans problème ...

+0

L'assemblage chargé est pas de bin \ Debug, car il est un test unitaire MSTest. Il est copié dans le répertoire de déploiement dédié. Mais c'est l'assemblage correct. Quand je l'inspecte avec le réflecteur alors que le débogueur fonctionne, je vois l'attribut DataSource injecté par PostSharp sur la méthode de test unitaire respective. Je ne sais pas si c'est important, mais nos produits ne sont pas intégrés dans bin \ Debug, tous les projets sont plutôt intégrés dans un seul répertoire bin consolidé en dehors du dossier de la solution. DataSource est un attribut spécial. Avez-vous essayé PostSharping? – mark

+0

BTW, préférez-vous que je ouvre un fil sur les forums PostSharp pour cela? – mark

+0

Il m'est plus facile de surveiller le forum PostSharp. Si vous êtes sûr que MSTest charge l'assemblage correct, amélioré, alors je ne sais pas ce qui ne va pas. –

Questions connexes