C#项目MS Test单元测试Jenkins运行报错:无法加载指定Fakes程序集
我之前碰到过好几次这种情况——VS本地跑Fakes测试完全正常,一放到Jenkins上就报Microsoft.QualityTools.Testing.Fakes找不到的错误,核心原因基本都是Jenkins环境缺少Fakes的依赖配置或者组件支持,给你几个可行的解决方案:
确保Jenkins代理机器安装了完整的VS2015测试组件
Fakes是Visual Studio自带的测试工具,并非独立的NuGet包。所以跑测试的Jenkins代理机器必须安装了VS2015,而且安装时要勾选测试工具下的所有相关组件(包括Fakes框架)。如果用的是Visual Studio Build Tools 2015,也要确保勾选了对应的测试功能模块,不然系统里根本没有这个dll文件。指定Jenkins使用VS2015对应的MSTest运行器
Jenkins默认可能调用了旧版本的MSTest.exe,或者没指定正确的路径。你需要在Jenkins的测试任务里,手动指定VS2015的MSTest路径:C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\MSTest.exe同时要确保测试命令里指向的是你项目的测试dll所在目录,避免路径匹配问题。
设置Fakes程序集"复制本地"
在VS的测试项目里,找到对Microsoft.QualityTools.Testing.Fakes的引用,右键打开属性窗口,把复制本地设置为True。这样编译测试项目时,这个dll会被复制到输出的bin文件夹里,Jenkins运行测试时就能直接从本地目录加载,不用依赖VS安装路径里的文件了。检查Jenkins服务账号的权限
有时候Jenkins的服务账号没有读取VS安装目录的权限,导致无法加载Fakes的dll。可以尝试给Jenkins账号添加VS安装目录(比如C:\Program Files (x86)\Microsoft Visual Studio 14.0\)的读取权限,或者用有管理员权限的账号运行Jenkins服务试试。清理并重新生成测试项目
偶尔Jenkins的工作目录里会有旧的编译缓存,导致依赖缺失。可以在Jenkins任务里添加一个步骤,先清理工作区,然后重新完整生成解决方案,再运行测试。
内容的提问来源于stack exchange,提问作者Jain Prince

