编程运行NUnit测试出现无法找到nunit.core程序集引用报错如何解决
问题原因及解决方案
核心原因
这个报错是程序加载时无法找到对应版本的nunit.core依赖程序集导致的,常见触发原因有三个:
- 主控制台项目引用
nunit.core时未开启复制本地配置,编译后主程序输出目录没有对应dll文件 - 你本地引用的
nunit.core版本与报错要求的2.6.4.14350版本不匹配,或是误装了结构完全不同的NUnit3.x版本 - 你动态编译生成的
test.dll输出在桌面目录,桌面路径下没有配套的NUnit依赖文件,加载测试程序集时找不到依赖
修复步骤
- 首先确认依赖版本:你当前使用的
SimpleTestRunner属于NUnit2.x的运行器,NUnit3.x已经废弃了nunit.core相关组件,如果你安装的是NUnit3.x请先卸载,通过NuGet包管理器控制台执行命令安装匹配版本:Install-Package NUnit -Version 2.6.4 - 配置引用复制属性:在解决方案资源管理器的引用列表中找到
nunit.core、nunit.core.interfaces,右键点击选择「属性」,将复制本地选项设置为True,编译后所有依赖会自动复制到主程序的运行目录。 - 调整输出路径或同步依赖:你可以将代码中
compilerParams.OutputAssembly的输出路径改为主程序的bin/Debug或bin/Release运行目录,或是把主程序输出目录里所有NUnit相关的dll全部复制到test.dll输出的桌面目录,确保加载测试程序集时能找到对应依赖。 - 可选:如果仍存在版本不匹配问题,在主项目的
App.config文件中添加程序集绑定重定向配置,强制所有nunit.core引用使用指定版本:
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="nunit.core" publicKeyToken="96d09a1eb7f44a77" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-2.6.4.14350" newVersion="2.6.4.14350" /> </dependentAssembly> </assemblyBinding> </runtime>
内容的提问来源于stack exchange,提问作者therealsowho
相关产品推荐
相关产品推荐

