【问题标题】:VSTestHost is crashing and would not work anymoreVSTestHost 崩溃并且不再工作
【发布时间】:2009-10-07 11:10:57
【问题描述】:

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

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

我尝试了许多在 Internet 上找到的解决方案来解决该问题,但都没有奏效。我必须将 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 个几乎做同样事情的其他测试。 我在带有 VSTS 2008 SP1 的 Windows 7 x64 和 Windows XP x86 上试过这个。两个系统都发生崩溃。

【问题讨论】:

    标签: c# .net unit-testing tdd


    【解决方案1】:

    幸运的是,我遇到了类似的问题,a hotfix 解决了我机器上的问题。 如果您对这个问题的细节感兴趣,我已经在my blog 写过。

    【讨论】:

    • 我想试一试,但是这个错误神秘地消失了。我什至不能让它再次发生......我没有改变我的代码。我保证如果发生同样的问题,我会测试这个修补程序,我会发布反馈。谢谢。
    【解决方案2】:

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

    为了解决另一种问题,我们将测试主机配置为在每次测试运行时重新启动。这可能也可以解决您的问题。

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

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

    希望这会有所帮助。

    【讨论】:

    • 我试过了,目前它似乎工作正常。但我暂时无法确认您的答案,因为坠机发生的方式有点不可预测。我知道这可能随时崩溃!交叉手指。谢谢。
    • 不幸的是,崩溃又发生了……我不知道这是否与错误使用 ConfigurationManager 或 StreamWriter(即使使用 using 语句)有关,还是仅与单元测试的不稳定有关框架。我将再次恢复 Windows。我忘了提到我在 Windows XP x86 和 Windows 7 x64 下的 VSTS 2008 SP1 上对此进行了测试。崩溃发生在两个系统上。
    【解决方案3】:

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

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

    设置一些断点或在其中输入一些日志以查看失败的地方(如果失败)。

    其他建议是完全注释掉 AlphaProjectConfiguration 类的使用,看看事情是否仍然崩溃。听起来你说它只会在使用该类时崩溃。如果是这样,是时候深入了解 imolementation 了。

    我可能帮不了你太多,但这些是我真正不知道你已经做了多少的第一步。

    【讨论】:

    • “其他建议是完全注释掉 AlphaProjectConfiguration 类的使用,看看是否仍然崩溃”这就是我迷失的地方,因为即使在注释掉它之后,它仍然会崩溃,即使在之前运行正常且完全独立的其他项目。这就像它破坏了框架本身的完整性(我别无选择,只能将 Windows 恢复到以前的状态以使其再次工作)。我要看看资源是否是我问题的关键。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多