如何在Jenkins中获取多个测试项目的dotCover覆盖率报告
实现dotCover多项目覆盖率报告合并的方案
嗨,别着急!我刚好处理过类似的需求,给你分享两种靠谱的实现方式,帮你把多个测试项目的代码覆盖率报告合并成一个:
方法一:手动分步执行dotCover命令行工具
这是最直接的方式,分三步就能搞定:
第一步:生成单个项目的覆盖率快照
为每个测试项目单独生成.dcvr格式的覆盖率快照文件,命令示例如下:dotcover cover /TargetExecutable:"C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" /TargetArguments:"YourTestProject1\bin\Debug\YourTestProject1.dll" /Output:"Project1_Coverage.dcvr"把上面的命令复制多份,替换测试项目路径,为每个项目都生成对应的
.dcvr文件。第二步:合并所有覆盖率快照
用dotCover的merge命令,把所有单个项目的快照合并成一个统一的快照:dotcover merge /Source:"Project1_Coverage.dcvr;Project2_Coverage.dcvr;Project3_Coverage.dcvr" /Output:"Combined_All_Projects.dcvr"注意:多个文件路径用分号分隔,如果路径包含空格,记得给整个路径加引号。
第三步:生成可读的最终报告
把合并后的快照转换成HTML、XML等易读的格式,以HTML为例:dotcover report /Source:"Combined_All_Projects.dcvr" /Output:"Final_Coverage_Report.html" /ReportType:HTMLdotCover支持的报告类型还有XML、JSON、PDF,按需替换
ReportType参数即可。
方法二:写批处理脚本自动化完成
如果项目数量多,手动敲命令太麻烦,写个批处理脚本一键搞定所有流程:
@echo off setlocal enabledelayedexpansion :: 配置你自己的路径 set DOTCOVER_EXE="C:\Program Files\JetBrains\dotCover\2023.2\bin\dotcover.exe" set VSTEST_EXE="C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" :: 列出所有测试项目的DLL路径 set TEST_PROJECTS=^ "TestProject1\bin\Debug\TestProject1.dll" ^ "TestProject2\bin\Debug\TestProject2.dll" ^ "TestProject3\bin\Debug\TestProject3.dll" set COMBINED_SNAPSHOT="Combined_Coverage.dcvr" set FINAL_REPORT="Final_Coverage_Report.html" :: 清理旧的快照文件 del /q *.dcvr :: 循环处理每个测试项目,生成单独快照 for %%p in (%TEST_PROJECTS%) do ( set SNAPSHOT_FILE=%%~np_Coverage.dcvr echo 正在生成 %%p 的覆盖率快照... %DOTCOVER_EXE% cover /TargetExecutable:%VSTEST_EXE% /TargetArguments:"%%p" /Output:"!SNAPSHOT_FILE!" ) :: 合并所有快照 echo 正在合并所有覆盖率快照... %DOTCOVER_EXE% merge /Source:"*.dcvr" /Output:%COMBINED_SNAPSHOT% :: 生成最终报告 echo 正在生成最终覆盖率报告... %DOTCOVER_EXE% report /Source:%COMBINED_SNAPSHOT% /Output:%FINAL_REPORT% /ReportType:HTML echo 操作完成!最终报告已生成:%FINAL_REPORT% endlocal
使用时只需要替换脚本里的路径配置,双击运行就能自动完成所有步骤。
一些小提醒
- 确认dotCover的安装路径正确,不同版本的JetBrains工具路径可能略有不同;
- 如果用的是NUnit或xUnit的测试运行器,替换
VSTEST_EXE为对应的运行器路径即可; - 执行脚本前确保所有测试项目都已编译完成,否则会找不到测试DLL文件。
内容的提问来源于stack exchange,提问作者sunero4
相关产品推荐
相关产品推荐

