运行所有测试时出现MS测试错误

时间:2010-01-15 14:57:44

标签: visual-studio unit-testing mstest

我目前正在开发一个使用MS Test进行单元测试的项目。当我执行“运行所有测试”时,大约1/3的测试会出现以下错误:

测试方法[测试方法]引发了异常System.IO.FileLoadException,但预期会出现异常System.InvalidOperationException。异常消息:System.IO.FileLoadException:加载此程序集将从其他实例生成不同的授权集。 (HRESULT异常:0x80131401)

如果我进入任何失败的测试并自行运行测试,它将给出相同的错误。如果我在测试中设置了一个断点并调试测试,它将通过而没有错误。如果我再次进行单独测试,它将通过。如果我回去运行所有测试,我会再次得到上述错误1/3的测试。

之前我遇到过这个问题,我没有采取任何措施来修复它,它只是神奇地消失了。但现在又回来了,非常令人沮丧。

导致此错误的原因是什么?这个错误有解决方法吗?

1 个答案:

答案 0 :(得分:1)

听起来你有Interacting Tests - xUnit Test Patterns气味。

简而言之,一些测试依赖于以前的测试已经执行,所以当你单独运行它们时,它们会改变行为,因为它们对环境的隐含假设结果是错误的。

这也可以解释为什么你之前遇到了这个问题,然后它就消失了。尽管MSTest在订购测试的方式上似乎相当稳定,但它可能会决定下次以不同的顺序运行它们。

我不能告诉你如何解决问题,因为它是个人的。但是,请查找Shared Fixtures。例子包括

  • 数据库
  • 文件
  • 静态(在Visual Basic中共享)类型

在您的情况下,FileLoadException建议您的测试需要一些文件。当您运行整个测试套件时,这些文件已被先前的测试用例留下,而当测试单独执行时,这些文件显然不存在。