调试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
相关产品推荐
相关产品推荐

