2010-01-15 54 views
3

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

测试方法[测试方法]抛出异常System.IO.FileLoadException,但预期会发生异常System.InvalidOperationException。异常消息:System.IO.FileLoadException:加载此程序集将产生与其他实例不同的授予集。 (异常来自HRESULT:0x80131401)

如果我去任何失败的测试和运行测试本身它会给出同样的错误。如果我在测试中放置一个断点并调试测试,它将通过并且没有错误。如果我再次运行个人测试,它会通过。如果我回到运行所有测试,我再次获得上述三分之一测试的错误。

我之前就有过这个问题,我没有做任何修理,只是神奇地消失了。但现在它回来了,非常沮丧。

什么是造成此错误?有没有解决这个错误?

回答

1

这听起来像你有Interacting Tests - 一个xUnit Test Patterns气味。

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

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

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

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

在你的情况下,FileLoadException表明你的测试期待一些文件被周围。当你运行整个测试套件时,这些文件已经被以前的测试用例留下了,而当测试单独执行时,这些文件显然不存在。

+0

我知道数据库没有问题,因为我们使用RhinoMocks来模拟我们所有的数据访问。不知道有关文件。我将检查正在使用的任何文件。谢谢 – troyappeldorn 2010-01-15 17:32:39

+0

没有正在使用的文件。所以不完全确定System.IO.FileLoadException。仍然没有规律地发生。通常可以通过重新启动VS来修复。 – troyappeldorn 2010-02-16 21:53:06

相关问题