我目前正在使用MS Test进行单元测试的项目中。当我执行“运行所有测试”时,对于大约1/3的测试,都会出现以下错误:
测试方法[Test Method]引发了System.IO.FileLoadException异常,但是预期出现了System.InvalidOperationException异常。异常消息:System.IO.FileLoadException:加载此程序集将产生与其他实例不同的授予集。 (来自HRESULT的异常:0x80131401)
如果我进行任何失败的测试,然后自行运行测试,则会出现相同的错误。如果我在测试中放置一个断点并调试该测试,则它将通过且没有错误。如果我再次运行单个测试,它将通过。如果我重新运行所有测试,则在1/3的测试中都会再次出现上述错误。
之前我有这个问题,但我没有做任何事情来解决它,只是魔术般地消失了。但是现在又回来了,非常令人沮丧。
是什么导致此错误?是否有针对此错误的修复程序?
最佳答案
听起来您有Interacting Tests-xUnit Test Patterns的气味。
简而言之,有些测试依赖于先前的测试来执行,因此当您单独运行它们时,它们会改变行为,因为它们对环境的隐含假设被证明是错误的。
这也可以解释为什么您以前遇到过问题,然后又消失了。尽管MSTest在订购测试方面似乎相当稳定,但它可能决定下次再次以不同的顺序运行它们。
我无法告诉您如何解决该问题,因为它是个别问题。但是,请查找Shared Fixtures。例子包括
就您而言,FileLoadException建议您的测试期望某些文件存在。当您运行整个测试套件时,这些文件已由以前的测试用例所保留,而当单独执行测试时,这些文件将明显不存在。
关于visual-studio - 运行所有测试时出现MS Test错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2072420/