VSTestHost.exe 已停止工作 - 无法运行单元测试
Posted
技术标签:
【中文标题】VSTestHost.exe 已停止工作 - 无法运行单元测试【英文标题】:VSTestHost.exe has stopped working - can't run unit tests 【发布时间】:2008-10-24 14:57:37 【问题描述】:微软单元测试框架突然罢工了。
当我尝试在 VS2008 中运行测试时,我收到一个对话框,显示消息“VSTestHost.exe 已停止工作”。
我在 Vista 上运行 Visual Studio Team System 2008(版本 9.0.30729.1 SP)并应用了所有更新。
“问题报告和解决方案”建议我“升级到 Visual Studio Team Edition for Software Testers 的最新零售版”,这是不对的。
我已尝试重新启动。 我试过“devenv /resetuserdata”
这些没有区别。
我想基于这个废话回到MbUnit,但这不是我的选择。 有关如何解决此问题的任何建议?
【问题讨论】:
【参考方案1】:这通常是由于代码中的某些错误,例如无限循环或循环引用。
我遇到了同样的问题,并意识到是我的代码搞砸了,而测试框架只是通过关闭自身来保护自己免受我的代码的影响。
对我来说,关键是同样的事情发生在两个不同的测试框架上。所以它必须是我的代码。
【讨论】:
【参考方案2】:我发现了我所询问的问题,这是我的错。我编写了一个堆栈溢出代码:我将一些代码重构为一个扩展方法,将其重命名以匹配它调用的 Linq 扩展方法,因此它只是自递归地调用它。
从中吸取的教训:1: "select" isn't broken。 由于它的坏名声,我太快责怪框架了。
2:但它确实有一个病态的一般性和完全误导性的错误信息。
在错误消息如此糟糕的情况下,一个好的调试技术是尝试确定什么会导致错误,什么不会导致错误。在我的例子中,当我注意到它不是“测试运行”失败时,突破就来了,它只是包含 Sql 数据库测试的运行——域对象和模拟存储库测试可以运行得很好,所以必须对它正在运行的代码有所了解。并且调试器将进入测试。我从灾难性的错误中假设它甚至没有走那么远。
【讨论】:
【参考方案3】:请务必注意,虽然解释 VSTestHost.exe 停止工作的错误消息描述性不是很强。在测试结果中,有一个链接显示“测试运行已完成”(或者在您的情况下,它会显示“测试运行失败”),当您单击此链接时,您会看到发生的确切错误消息,导致测试主机失败(堆栈溢出异常)。
他们隐藏了这些信息,但知道主机没有崩溃但某些测试根本不起作用时尤其有用,有时可以在该链接中找到有关原因的信息。
【讨论】:
【参考方案4】:您是否尝试过在 Visual Studio 上运行修复甚至重置为出厂设置?
要重置为出厂设置,请从运行窗口运行 devenv /ResetSettings。
【讨论】:
以上是关于VSTestHost.exe 已停止工作 - 无法运行单元测试的主要内容,如果未能解决你的问题,请参考以下文章
之前停止运行(和工作)实例后无法启动 Hadoop,因为 Datanode 说目录已锁定