5

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

当我尝试在 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

4 回答 4

8

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

I had the same issue and realized that it was my code that was messing up, and the test framework was simply protecting itself against my code by shutting itself down.

The key for me was that the same thing happened with two different testing frameworks. So it had to be my code.

于 2009-10-29T17:19:11.837 回答
1

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

从中吸取的教训:
1: “选择”没有被破坏。由于它的坏名声,我太快责怪框架了。

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

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

于 2008-10-26T16:25:29.510 回答
1

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

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

于 2008-11-17T16:30:37.343 回答
-1

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

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

于 2008-10-26T16:26:44.437 回答