【问题标题】:VSTestHost.exe has stopped working - can't run unit testsVSTestHost.exe 已停止工作 - 无法运行单元测试
【发布时间】: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,但这不是我的选择。
有关如何解决此问题的任何建议?

【问题讨论】:

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


    【解决方案1】:

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

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

    对我来说,关键是同样的事情发生在两个不同的测试框架上。所以它必须是我的代码。

    【讨论】:

      【解决方案2】:

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

      从中吸取的教训:
      1: "select" isn't broken。 由于它的坏名声,我太快责怪框架了。

      2:但它确实有一个病态的一般性和完全误导性的错误信息。

      在错误消息如此糟糕的情况下,一个好的调试技术是尝试确定什么会导致错误,什么不会导致错误。在我的例子中,当我注意到它不是“测试运行”失败时,突破就来了,它只是包含 Sql 数据库测试的运行——域对象和模拟存储库测试可以运行得很好,所以必须对它正在运行的代码有所了解。并且调试器将进入测试。我从灾难性的错误中假设它甚至没有走那么远。

      【讨论】:

        【解决方案3】:

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

        他们隐藏了这些信息,但知道主机没有崩溃但某些测试根本不起作用时尤其有用,有时可以在该链接中找到有关原因的信息。

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

            猜你喜欢
            • 2015-11-10
            • 2020-07-17
            • 1970-01-01
            • 2018-08-08
            • 1970-01-01
            • 1970-01-01
            • 2016-03-23
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多