visual-studio - 运行所有测试时出现MS Test错误

标签 visual-studio unit-testing mstest

我目前正在使用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。例子包括

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

  • 就您而言,FileLoadException建议您的测试期望某些文件存在。当您运行整个测试套件时,这些文件已由以前的测试用例所保留,而当单独执行测试时,这些文件将明显不存在。

    关于visual-studio - 运行所有测试时出现MS Test错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2072420/

    相关文章:

    vb.net - 将 .csv 文件导入文本框后。特殊字符显示为 "�"

    .net - 什么是 NuGet 以及它如何工作? [ Entity Framework 的扩展]

    php - 模拟框架返回具有不同名称和类型的类

    java - Junit 用于可运行类和队列

    c# - MSTest 未在汇编中发现单元测试

    c# - AssemblyCleanup 未触发

    c# - 正确分配命名空间(根据 ReSharper 的建议)

    visual-studio - 如何在 VS NuGet 包管理器控制台中永久设置新的默认项目?

    java - 测试没有运行

    c# - ASP.NET 应用程序的单元测试配置