2008-10-24 9 views
5

Le cadre de test unitaire de Microsoft s'est soudainement mis en grève.VSTestHost.exe a cessé de fonctionner - impossible d'exécuter des tests unitaires

Lorsque je tente d'exécuter des tests dans VS2008, je reçois une boîte de dialogue avec le message « VSTestHost.exe a cessé de fonctionner ».

Je Visual Studio Team System 2008 (version 9.0.30729.1 SP) en cours d'exécution sur Vista avec toutes les mises à jour appliquées.

Les « rapports de problèmes et solutions » suggère que je « Mise à niveau vers la dernière version commerciale de Visual Studio Team Edition pour testeurs logiciels » qui ne va pas.

J'ai essayé de redémarrer.
J'ai essayé "devenv/resetuserdata"

Cela n'a fait aucune différence.

Je voudrais revenir à MbUnit en fonction de ce non-sens, mais ce n'est pas mon choix.
Des suggestions sur la façon de résoudre ce problème?

Répondre

7

Ceci est généralement dû à une erreur dans le code, comme une boucle sans fin ou une référence circulaire.J'ai eu le même problème et j'ai réalisé que c'était mon code qui était en train de tout chambouler, et le framework de test se protégeait simplement contre mon code en se fermant. La clé pour moi était que la même chose s'est produite avec deux frameworks de test différents. Donc ça devait être mon code.

1

J'ai trouvé le problème que je posais à propos de, et c'était de ma faute. J'avais codé un débordement de pile: j'ai refaçonné du code dans une méthode d'extension, je l'ai renommé pour qu'il corresponde à la méthode d'extension Linq qu'il appelait, et il l'a donc appelée de manière auto récursive.

Les leçons à tirer de cette:
1:"select" isn't broken. J'étais trop rapide pour blâmer le cadre, en raison de sa mauvaise réputation. Mais il avait un message d'erreur pathologiquement général et entièrement trompeur.

Dans les cas où le message d'erreur est que mauvaise, une bonne technique de débogage est d'essayer de cerner ce qui fonctionne et ce qui ne provoque pas l'erreur. Dans mon cas, la percée est survenue dès que j'ai remarqué que ce n'était pas "le test" qui échouait, mais seulement les tests contenant la base de données Sql - l'objet domaine et le test de référentiel pouvaient fonctionner correctement, il fallait donc être quelque chose sur le code qu'il était en cours d'exécution. Et que le débogueur entrerait dans les tests. J'avais supposé des erreurs calamiteuses qu'il n'allait même pas si loin.

0

Avez-vous essayé d'exécuter une réparation sur Visual Studio ou même de réinitialiser les paramètres d'usine?

Pour réinitialiser les paramètres d'usine, exécutez la fonction devenv/ResetSettings dans la fenêtre d'exécution.

1

Il est important de noter que le message d'erreur expliquant que VSTestHost.exe a cessé de fonctionner n'était pas très descriptif. Dans les résultats du test il y a un lien qui dit "Test run completed" (ou dans votre cas, il aurait dit "Test run failed") en cliquant sur ce que vous auriez vu le message d'erreur exact qui a causé l'hôte de test à fail (l'exception de dépassement de pile).

Ils enterrent ces informations, mais il est utile de savoir en particulier quand l'hôte ne plante pas, mais certains tests ne fonctionnent tout simplement pas, parfois l'information sur les raisons de ce lien.

Questions connexes