2009-10-07 5 views
2

Pour mon projet, j'utilise le framework de tests unitaires Visual Studio intégré, mais j'ai des problèmes que je n'ai jamais vus auparavant.VSTestHost plante et ne fonctionnerait plus

Une de mes classes provoque le blocage de VSTestHost. Donc d'abord, je pensais que c'était parce qu'il y avait un tas de code provoquant un débordement de pile. Ce qui est vraiment étrange, c'est que maintenant, même si je crée un nouveau projet ou que j'utilise d'anciens projets qui fonctionnaient auparavant, VSTestHost plante immédiatement (1/2 seconde après avoir cliqué sur le bouton exécuter les tests). En fait, je ne peux plus faire de tests unitaires ... Cela me rend vraiment fou.

J'ai essayé de nombreuses solutions trouvées sur Internet pour résoudre ce problème, mais rien n'a fonctionné. J'ai dû restaurer Windows à ma dernière mise à jour pour le faire fonctionner normalement. Ce qui est sûr, c'est que c'est une classe de test particulière qui fait que le cadre des tests unitaires devient fou. Quand je lance cette classe de test pour la première fois tout va bien et tous les tests réussissent, et puis chaque fois que j'essaie de lancer un test unitaire, VSTestHost plante, ce qui m'empêche d'effectuer des tests unitaires dans n'importe quel projet.

Ici, je vous montre le test qui est supposé faire planter le programme. Ma méthode LoadFromExe() utilise simplement la méthode ConfigurationManager.OpenExeConfiguration(). Cela fait maintenant quelques mois que j'utilise cette AlphaProjectConfiguration sans aucun problème. Je viens de mettre tous mes efforts pour résoudre ce problème et je m'en débarrasse vraiment maintenant. C'est pourquoi je demande de l'aide à la communauté maintenant. Merci.


Edit: Cette classe de test contient 3 autres tests que presque font la même chose. J'ai essayé ceci sur Windows 7 x64 et Windows XP x86 avec VSTS 2008 SP1. L'incident se produit sur les deux systèmes.

Répondre

0

J'ai eu un problème similaire par chance, il y a a hotfix qui a résolu le problème sur ma machine. Si vous êtes intéressé par les détails de ce problème, j'ai écrit à ce sujet dans my blog.

+0

Je voudrais l'essayer mais l'insecte a mystérieusement disparu. Je ne peux même pas y arriver à nouveau ... Je n'ai pas changé mon code. Je promets que je vais tester ce correctif si le même problème se produit et je publierai des commentaires. Merci. – Ucodia

0

Je ne peux pas imaginer ce qui ne va pas ici. Nous avons aussi quelques problèmes avec MSTest. C'est assez instable et lent.

Pour résoudre un autre type de problème, nous avons configuré l'hôte de test pour redémarrer à nouveau pour chaque test. Cela pourrait probablement aussi résoudre votre problème.

Goto Tools ->Options ->Test Tools ->Test Execution. Désactiver "Maintenir le moteur d'exécution de test en cours d'exécution entre les tests".

Le démarrage du test de test peut prendre plus de temps, car l'hôte de test doit démarrer à chaque fois. Mais cela résout certains problèmes.

Espérons que cela aide.

+0

Je l'ai essayé et pour l'instant il semble fonctionner correctement. Mais je ne peux pas confirmer votre réponse pour l'instant parce que la façon dont l'accident s'est produit était un peu imprévisible. Je sais que ça pourrait tomber à tout moment maintenant! On croise les doigts. Merci. – Ucodia

+0

Malheureusement, le crash est arrivé à nouveau ... Je ne sais pas si cela est lié à une utilisation incorrecte de ConfigurationManager ou de StreamWriter (même avec une instruction using) ou simplement liée à l'instabilité du framework de test unitaire. Je vais restaurer Windows à nouveau. J'ai oublié de mentionner que j'ai testé cela sur VSTS 2008 SP1 sous Windows XP x86 et Windows 7 x64. L'accident se produit sur les deux systèmes. – Ucodia

0

Si quelque chose ne fonctionne pas lorsque le test s'exécute, il se peut que certaines ressources soient verrouillées par le processus le plus important à l'origine des problèmes.

Je pourrais suggérer d'ajouter un peu de code de dépannage pour s'assurer que toutes les ressources de fichier sont correctement fermées si des exceptions inattendues se produisent. Lancez une gestion des exceptions autour des méthodes StreamWriter dans la méthode LoadGoodConfigurationFromExeTest et également le code AlphaProjectConfiguration.

Définissez des points d'arrêt ou lancez une session pour voir où les choses échouent (si elles le sont).

Des suggestions supplémentaires seraient de commenter entièrement l'utilisation de la classe AlphaProjectConfiguration et de voir si les choses se bloquent encore.On dirait que vous êtes en train de dire que ça ne fera que planter quand vous utiliserez cette classe. Si oui, le temps d'approfondir l'imolementation. Je ne vous aiderai probablement pas beaucoup, mais ce sont les premières étapes que je prendrais sans vraiment savoir ce que vous avez déjà fait.

+0

"Des suggestions supplémentaires seraient de commenter entièrement l'utilisation de la classe AlphaProjectConfiguration et de voir si les choses se bloquent encore" Voilà où je suis perdu, car même après avoir commenté, il se bloque toujours, même sur d'autres projets qui fonctionnaient correctement avant et qui étaient complètement indépendants. C'est comme si cela corrompait l'intégrité du framework lui-même (je n'avais pas d'autre choix que de restaurer Windows dans un état précédent pour le faire fonctionner à nouveau). Je vais jeter un oeil pour voir si les ressources sont la clé de mon problème. – Ucodia