我目前正在开发一个使用MS Test进行单元测试的项目。当我执行“运行所有测试”时,大约1/3的测试会出现以下错误:
测试方法[测试方法]引发了异常System.IO.FileLoadException,但预期会出现异常System.InvalidOperationException。异常消息:System.IO.FileLoadException:加载此程序集将从其他实例生成不同的授权集。 (HRESULT异常:0x80131401)
如果我进入任何失败的测试并自行运行测试,它将给出相同的错误。如果我在测试中设置了一个断点并调试测试,它将通过而没有错误。如果我再次进行单独测试,它将通过。如果我回去运行所有测试,我会再次得到上述错误1/3的测试。
之前我遇到过这个问题,我没有采取任何措施来修复它,它只是神奇地消失了。但现在又回来了,非常令人沮丧。
导致此错误的原因是什么?这个错误有解决方法吗?
答案 0 :(得分:1)
听起来你有Interacting Tests - xUnit Test Patterns气味。
简而言之,一些测试依赖于以前的测试已经执行,所以当你单独运行它们时,它们会改变行为,因为它们对环境的隐含假设结果是错误的。
这也可以解释为什么你之前遇到了这个问题,然后它就消失了。尽管MSTest在订购测试的方式上似乎相当稳定,但它可能会决定下次以不同的顺序运行它们。
我不能告诉你如何解决问题,因为它是个人的。但是,请查找Shared Fixtures。例子包括
在您的情况下,FileLoadException建议您的测试需要一些文件。当您运行整个测试套件时,这些文件已被先前的测试用例留下,而当测试单独执行时,这些文件显然不存在。