VSTestHost.exe已停止工作 - 无法运行单元测试

时间:2008-10-24 14:57:37

标签: visual-studio-2008 unit-testing vstesthost

微软的单元测试框架突然罢工。

当我尝试在VS2008中运行测试时,我收到一条消息“VSTestHost.exe已停止工作”的对话框。

我在Vista上运行Visual Studio Team System 2008(版本9.0.30729.1 SP)并应用了所有更新。

“问题报告和解决方案”表明我“升级到Visual Studio Team Edition for Software Testers的最新零售版本”,这是不对的。

我尝试过重启。
我试过“devenv / resetuserdata”

这些没有区别。

我想根据这个废话回到MbUnit,但这不是我的选择。
有关如何解决此问题的任何建议吗?

4 个答案:

答案 0 :(得分:7)

这通常是由于代码中的错误,如无限循环或循环引用。

我遇到了同样的问题,并意识到这是我的代码搞砸了,测试框架只是通过自行关闭来保护自己免受我的代码攻击。

对我而言,关键是两个不同的测试框架也发生了同样的事情。所以它必须是我的代码。

答案 1 :(得分:1)

我发现了我所问的问题,这是我的错。我编写了一个堆栈溢出代码:我将一些代码重构为一个扩展方法,重命名它以匹配它调用的Linq扩展方法,所以它只是递归地调用它。

从中吸取教训:
1: "select" isn't broken。 由于声誉不好,我太过于责怪该框架。

2:但它确实存在病态上一般且完全误导性的错误消息。

如果错误消息很糟糕,一个好的调试技术是尝试确定哪些内容和哪些内容不会导致错误。在我的情况下,一旦我注意到它不是“测试运行”失败,突破就来了,它只运行包含Sql数据库测试 - 域对象和模拟存储库测试可以运行得很好,所以不得不关于它正在运行的代码。并且调试器将进入测试阶段。我已经从灾难性的错误中假设它甚至没有达到那么远。

答案 2 :(得分:1)

重要的是要注意,虽然解释VSTestHost.exe停止工作的错误消息不是很具描述性。在测试结果中有一个链接显示“测试运行已完成”(或者在您的情况下,它会说“测试运行失败”)单击此按钮时您会看到发生的确切错误消息导致测试主机失败(堆栈溢出异常)。

他们有点埋葬这些信息,但特别是当主机没有崩溃但有些测试根本不起作用时有用,有时可以在该链接中找到有关原因的信息。

答案 3 :(得分:0)

您是否尝试在Visual Studio上运行修复甚至重置为出厂设置?

要重置为出厂设置,请从运行窗口运行devenv / ResetSettings。