You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调试NUnit测试遇多类随机异常及FrameworkName参数错误求助

解决VS2017+NUnit3.9+Resharper调试测试时的系列异常问题

我之前在类似的环境组合下碰到过几乎一模一样的调试异常,结合自己的排查经验和社区解决方案,给你整理几个针对性的修复步骤:

1. 先搞定BadImageFormatException(32/64位不匹配核心问题)

这个异常是触发后续连锁问题的根源,尤其是涉及Microsoft.VisualStudio.QualityTools.VideoRecorderEngine这类VS内置组件时,大概率是位数不匹配:

  • 打开测试项目属性→生成标签页,把平台目标改成和主项目一致的选项(比如统一选x64或x86,不要用Any CPU)
  • 在VS顶部工具栏,将解决方案平台从Any CPU切换为对应的x64/x86
  • 如果你用Resharper运行测试,进入Resharper > Options > Tools > Unit Testing > NUnit,确保Run tests in 32-bit process的勾选状态和你的平台目标匹配

2. 禁用VS测试录制功能(解决VideoRecorder相关绑定失败)

那些BindingFailure异常都是VS自带的测试录制工具导致的,直接禁用就能消除这类报错:

  • 打开VS的工具 > 选项 > 测试,找到测试录制板块,取消勾选启用测试录制
  • 重启Visual Studio后再尝试调试测试

3. 调整NUnit及适配器版本(解决兼容性问题)

你当前用的NUnit3.9.0和Test Adapter3.9.0在VS2017 v15.5.4上存在兼容性瑕疵,建议升级到更稳定的版本:

  • 先卸载当前项目中的NUnit和NUnit Test Adapter NuGet包
  • 安装NUnit 3.13.3(这个版本对VS2017兼容性更友好)和对应的NUnit Test Adapter 3.17.0
  • 执行Build > Clean Solution清理解决方案,再重新生成所有项目

4. 修复LoadFromContext异常(程序集加载上下文问题)

这个异常是因为nunit.engine.api和Mono.Cecil通过LoadFrom上下文加载导致的,通过配置绑定重定向解决:

  • 打开测试项目的app.config文件,添加以下配置:
    <configuration>
      <runtime>
        <loadFromRemoteSources enabled="true" />
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <assemblyIdentity name="nunit.engine.api" publicKeyToken="2638cd05610744eb" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-3.9.0.0" newVersion="3.9.0.0" />
          </dependentAssembly>
          <dependentAssembly>
            <assemblyIdentity name="Mono.Cecil" publicKeyToken="0738eb9f132ed756" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-0.10.0.0" newVersion="0.10.0.0" />
          </dependentAssembly>
        </assemblyBinding>
      </runtime>
    </configuration>
    
  • 进入Resharper > Options > Tools > Unit Testing,勾选Use app.config from test assembly directory

5. 消除调试视图的ArgumentNullException

这个异常是Resharper调试视图的bug导致的,有两种修复方式:

  • 进入Resharper > Options > Tools > Debugger,找到Data Views,取消勾选Enable Debugger Visualizers
  • 把Resharper升级到2017.3.6版本(该版本修复了多个调试视图相关的bug)
  • 如果以上都不行,暂时切换到VS自带的测试运行器:进入Resharper > Options > Tools > Unit Testing > General,取消勾选Enable Resharper test runner

内容的提问来源于stack exchange,提问作者Thypari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:30:57