VSTestHost崩溃了,不再工作了

时间:2009-10-07 11:10:57

标签: c# .net unit-testing tdd

对于我的项目,我使用的是集成的Visual Studio单元测试框架,但我遇到了一些我以前从未见过的问题。

我的一个类导致VSTestHost崩溃。所以首先我是因为有一堆代码导致堆栈溢出。真正奇怪的是,现在,即使我创建一个新项目或使用以前工作的旧项目,VSTestHost也会立即崩溃(点击运行测试按钮后1/2秒)。事实上,我再也无法进行单元测试......这真让我疯狂。

我在互联网上尝试了很多解决方案以解决这个问题,但没有任何效果。我不得不将Windows恢复到我的上次更新,以使其恢复正常工作。可以肯定的是,它是一个特定的测试类,会导致单元测试框架发疯。当我第一次运行这个测试类时,一切顺利,所有测试都通过,然后每次我尝试运行单元测试时,VSTestHost都会崩溃,导致我无法在任何项目中进行单元测试。

在这里,我向您展示了假设使程序崩溃的测试。我的LoadFromExe()方法只是使用ConfigurationManager.OpenExeConfiguration()方法。它现在在某个月我使用这个AlphaProjectConfiguration,没有任何问题。

[TestMethod()]
public void LoadGoodConfigurationFromExeTest()
{  

    using (StreamWriter sw = new StreamWriter(ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None).FilePath))
    {
        sw.Write(Resources.GoodConfiguration);
    }

    AlphaProjectConfiguration actual = new AlphaProjectConfiguration();
    actual.LoadFromExe();

    Assert.IsNotNull(actual);
}

我只是全力以赴解决这个问题,现在我真的摆脱了它。这就是为什么我现在要求社区提供一些帮助。 感谢。


编辑: 此测试类包含3个其他几乎完全相同的测试。 我试用了Windows 7 x64和带有VSTS 2008 SP1的Windows XP x86。两个系统都会发生崩溃。

3 个答案:

答案 0 :(得分:0)

我无法想象这里出了什么问题。我们还有一些与MSTest有关的令人讨厌的问题。它非常不稳定和缓慢。

为了解决另一种问题,我们将测试主机配置为每个testrun再次重启。这可能也可以解决您的问题。

转到Tools - > Options - > Test Tools - > Test Execution。禁用“在测试运行之间保持测试执行引擎运行”。

启动测试版可能需要一些时间,因为测试主机每次都需要启动。但它解决了一些问题。

希望这有帮助。

答案 1 :(得分:0)

如果测试运行时出现问题,可能是某些资源被mstest进程锁定导致问题。

我可能会建议添加一些故障排除代码,以确保在发生意外异常时正确关闭所有文件资源。在LoadGoodConfigurationFromExeTest方法和AlphaProjectConfiguration代码中围绕StreamWriter方法抛出一些异常处理。

设置一些断点或在那里放一些记录以查看事情失败的地方(如果有的话)。

其他建议是完全注释掉AlphaProjectConfiguration类的使用,看看是否还会崩溃。听起来你说它只会在使用该类时崩溃。如果是这样,是时候深入研究了这个问题。

我可能没有多大帮助你,但这些是我要采取的第一步,并不知道你已经做了多少。

答案 2 :(得分:0)

我有一个类似的问题,幸运的是a hotfix解决了我机器上的问题。 如果您对此问题的详细信息感兴趣,我已在my blog中写过。