MsTest项目:如何引用外部单元测试DLL并同时运行双方测试?
如何在当前解决方案中同时运行外部单元测试DLL的测试
方法一:直接引用测试DLL(快速实现)
- 右键当前解决方案的测试项目 → 「添加」→「引用」
- 切换到「浏览」标签,找到共享解决方案输出的单元测试DLL(一般在
bin/Debug或bin/Release目录),添加引用 - 检查共享测试DLL的依赖项(比如共享对象的DLL),确保这些文件能被当前测试项目访问:要么把依赖DLL复制到当前项目输出目录,要么在引用属性里把「复制本地」设为
True
方法二:添加项目引用(长期维护推荐)
如果共享解决方案和当前应用在同一代码仓库下,优先用这种方式:
- 右键当前解决方案 → 「添加」→「现有项目」
- 找到共享解决方案里的单元测试项目文件(
.csproj/.vbproj),添加到当前解决方案中 - 右键自己的测试项目 → 「添加」→「项目引用」,勾选刚添加的共享测试项目
- 后续共享测试更新时,当前解决方案会自动编译最新版本,不用手动复制DLL
配置测试运行器识别外部测试
主流测试框架(xUnit、NUnit、MSTest)的运行器默认会扫描引用的测试DLL,但如果测试没显示,可按以下方式配置:
xUnit
- 在当前测试项目根目录新建或修改
xunit.runner.json:
{ "shadowCopy": true, "include": [ "**/Shared.Test.dll" // 替换成你的共享测试DLL文件名 ] }
NUnit
- 编辑当前测试项目的
NUnit.TestAdapter.dll.config:
<configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Shared.Test" publicKeyToken="xxx" culture="neutral" /> <codeBase version="x.x.x.x" href="path/to/Shared.Test.dll" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>
MSTest
- 右键测试项目 → 属性 → 「测试」标签,勾选「启用测试发现和执行」,测试运行器选「MSTest V2」
- 若仍不识别,新建
.runsettings文件:
<RunSettings> <TestRunParameters> <Parameter name="AdditionalTestAssemblies" value="path/to/Shared.Test.dll" /> </TestRunParameters> </RunSettings>
关键注意事项
- 保证共享测试DLL和当前测试项目用的测试框架版本一致,避免兼容性报错
- 共享测试依赖的XML数据源,要设置其「复制到输出目录」为「如果较新则复制」,确保当前项目能读取到
- 运行时选择「运行所有测试」,测试运行器会自动执行当前项目和共享DLL里的全部测试
内容的提问来源于stack exchange,提问作者Jonathan Hart
相关产品推荐
相关产品推荐

