零基础学习CMake--第六章:测试与调试——用CTest让项目更可靠6.3 测试报告生成:HTML/XML格式输出与持续集成(CI) - 指南

news/2025/11/21 8:27:46/文章来源:https://www.cnblogs.com/ljbguanli/p/19250342

零基础学习CMake--第六章:测试与调试——用CTest让项目更可靠6.3 测试报告生成:HTML/XML格式输出与持续集成(CI) - 指南

第六章:测试与调试——用CTest让项目更可靠

6.3 测试报告生成:HTML/XML格式输出与持续集成(CI)

从“命令行输出”到“可视化报告”:测试结果的“最后一公里”

在前面的章节中,我们用ctest运行测试,只能看到命令行的“Passed/Failed”输出。但在实际项目中,我们需要:

  • ​可视化报告​​:HTML格式的报告,直观展示每个测试用例的执行情况、耗时、错误信息;

  • ​持续集成​​:每次代码提交自动运行测试,生成报告并通知团队;

  • ​结果归档​​:XML格式的报告,便于CI系统解析、存储和追溯。

这一节,我们将学习如何用CTest生成​​HTML/XML报告​​,并将测试集成到​​GitHub Actions​​(主流CI工具)中,实现“代码提交→自动测试→报告生成”的全流程自动化。


一、CTest测试报告格式介绍

CTest支持多种报告格式,最常用的是:

  1. ​JUnit XML​​:行业标准格式,几乎所有CI系统(GitHub Actions、Jenkins、GitLab CI)都支持解析;

  2. ​HTML​​:可视化界面,适合本地查看或嵌入项目文档;

  3. ​Plain Text​​:纯文本输出,适合日志归档。


二、生成JUnit XML报告(用于CI集成)

2.1 命令行生成XML报告

CTest提供了--output-junit参数,直接生成JUnit格式的XML报告:

# 在项目build目录中运行
ctest --test-dir tests \  # 指定测试目录--output-junit report.xml \  # 输出XML报告文件名--verbose  # 可选:显示详细执行过程

运行后,会在build目录生成report.xml,内容如下(简化):



2.2 配置CMake自动生成XML报告

可以在CMakeLists.txt中添加​​自定义目标​​,一键生成XML报告:

# 在父CMakeLists.txt中添加
add_custom_target(generate_test_reportCOMMAND ctest --test-dir tests --output-junit ${CMAKE_BINARY_DIR}/report.xmlCOMMENT "Generating JUnit XML test report..."
)

运行cmake --build . --target generate_test_report,即可生成报告。


三、生成HTML报告(本地可视化)

CTest自带​​HTML报告生成器​​,通过--output-html参数生成:

ctest --test-dir tests \--output-html report.html \--title "FileEncryptor Test Report"  # 报告标题

生成的report.html是完整的网页文件,包含:

  • 测试套件的整体统计(通过/失败数量、耗时);

  • 每个测试用例的详细信息(名称、状态、耗时、错误日志);

  • 可展开/折叠的测试树结构。

示例HTML报告截图(简化):

https://cmake.org/cmake/help/latest/_images/CTestTestReport.png


四、集成到GitHub Actions(持续集成)

GitHub Actions是免费的CI/CD服务,能自动运行测试并生成报告。我们以​​文件加密工具项目​​为例,配置CI流程:

4.1 准备GitHub仓库

将项目上传到GitHub,并启用GitHub Actions(默认已启用)。

4.2 创建Workflow文件

在项目根目录创建.github/workflows/ci.yml,内容如下:

name: FileEncryptor CI
on: [push, pull_request]  # 触发条件:push或PR
jobs:test:runs-on: ubuntu-latest  # 运行环境:Ubuntu最新版steps:# 1. 检出代码- name: Checkout codeuses: actions/checkout@v4# 2. 安装依赖(OpenSSL、Boost)- name: Install dependenciesrun: |sudo apt updatesudo apt install -y libssl-dev libboost-filesystem-dev libboost-system-dev# 3. 配置CMake- name: Configure CMakerun: |mkdir buildcd buildcmake .. -DBUILD_TESTS=ON  # 启用测试# 4. 构建项目- name: Build projectrun: |cd buildcmake --build .# 5. 运行测试并生成XML报告- name: Run tests and generate reportrun: |cd buildctest --test-dir tests --output-junit report.xml --verbose# 6. 上传报告作为Artifact(可在PR中查看)- name: Upload test reportuses: actions/upload-artifact@v4with:name: Test Reportpath: build/report.xmlretention-days: 7  # 保留7天

4.3 效果演示

  1. ​推送代码到GitHub​​:触发CI workflow;

  2. ​查看CI状态​​:在GitHub仓库的“Actions” tab中,能看到测试是否通过;

  3. ​查看测试报告​​:点击“Artifacts”→“Test Report”→“report.xml”,GitHub会自动渲染JUnit报告:

    https://docs.github.com/assets/cb-138303/images/help/repository/manual-check-run-test-report.png


五、高级技巧:自定义CI报告

5.1 过滤测试用例

如果只想运行特定标签的测试(比如“fast”),可以在ctest命令中添加-L参数:

- name: Run fast testsrun: |cd buildctest --test-dir tests -L fast --output-junit report.xml

5.2 显示详细错误日志

ctest中添加-V参数,输出详细日志(包括测试失败的原因):

- name: Run tests with verbose outputrun: |cd buildctest --test-dir tests -V --output-junit report.xml

5.3 集成CDash(可选)

CDash是一个开源的测试仪表盘工具,可以收集多个项目的测试报告,生成可视化面板。配置步骤:

  1. 安装CDash:sudo apt install cdash

  2. 启动CDash服务:cdash-configure

  3. 修改CTest配置,指向CDash服务器:

    set(CTEST_DROP_METHOD "http")
    set(CTEST_DROP_SITE "your-cdash-server.com")
    set(CTEST_DROP_LOCATION "/submit.php?project=FileEncryptor")

六、总结:测试报告与CI的价值

  1. ​可视化​​:HTML报告让测试结果一目了然;

  2. ​自动化​​:CI集成实现“代码提交→自动测试→报告生成”;

  3. ​追溯性​​:XML报告便于存储和排查问题;

  4. ​团队协作​​:PR中的测试报告让评审更高效。

​下一章预告​​:调试技巧——GDB与LLDB高级用法,解决加密算法中的棘手问题!

(配套资源:GitHub Actions配置示例,CTest报告生成脚本)


​本节要点​​:

  • --output-junit生成JUnit XML报告,用于CI解析;

  • --output-html生成可视化HTML报告;

  • 配置GitHub Actions自动运行测试并上传报告;

  • 测试报告的核心价值:可视化、自动化、追溯性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/971659.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

High-quality Surface Reconstruction using Gaussian Surfels 论文阅读 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年评价高的小麦磨面机行业内口碑厂家排行榜

2025年评价高的小麦磨面机行业内口碑厂家排行榜行业背景与市场趋势随着全球粮食加工技术的不断进步和消费者对面粉品质要求的日益提高,小麦磨面机行业迎来了新一轮的发展机遇。据中国粮食行业协会最新数据显示,2024年…

2025年口碑好的销量最好的电动车电池厂家最新热销排行

2025年口碑好的销量最好的电动车电池厂家最新热销排行行业背景与市场趋势随着全球环保意识的提升和新能源汽车产业的蓬勃发展,电动车电池市场迎来了前所未有的增长机遇。据中国汽车工业协会最新数据显示,2025年中国电…

2025年质量好的深睡记忆棉枕厂家最新TOP实力排行

2025年质量好的深睡记忆棉枕厂家最新TOP实力排行行业背景与市场趋势随着国民健康意识不断提升,睡眠经济已成为消费市场的重要增长点。据中国睡眠研究会最新发布的《2025中国睡眠健康白皮书》显示,我国功能性寝具市场…

inventor安装失败,如何使用卸载工具,完全彻底删除干净inventor各种残留注册表和文件

inventor安装失败,如何使用卸载工具,完全彻底删除干净inventor各种残留注册表和文件2025-11-21 08:15 psyyds2022 阅读(0) 评论(0) 收藏 举报inventor安装失败,如何使用inventor卸载工具,完全彻底删除干净inve…

2025年靠谱的AB枕芯厂家推荐及选购参考榜

2025年靠谱的AB枕芯厂家推荐及选购参考榜行业背景与市场趋势随着人们健康睡眠意识的不断提升,枕芯市场近年来呈现出稳健增长态势。据中国家用纺织品行业协会最新数据显示,2024年中国枕芯市场规模已达387亿元,预计20…

【机器人】RViz中LaserScan的参数信息说明 - 教程

【机器人】RViz中LaserScan的参数信息说明 - 教程2025-11-21 08:12 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; displa…

2025年热门的钙粉选粉机厂家最新推荐权威榜

2025年热门的钙粉选粉机厂家最新推荐权威榜行业背景与市场趋势随着环保政策的日益严格和工业技术的不断进步,钙粉选粉机作为水泥、建材、化工等行业的关键设备,其市场需求持续增长。据中国建材机械工业协会最新数据显…

format函数sql的实例

在SQL中,FORMAT函数可以用于格式化数字或日期。不过,具体的实现方式可能会因数据库的不同而有所差异。以下是一些常见数据库中FORMAT函数的使用示例:MySQL: 在MySQL中,你可以使用FORMAT()函数来格式化数字或日期。…

format函数sql的作用

在SQL中,FORMAT()函数是一个非常有用的字符串处理函数,它允许你按照指定的格式对字符串进行格式化。FORMAT()函数通常用于将数字、日期或其他数据类型转换为特定格式的字符串。FORMAT()函数的基本语法如下: FORMAT(…

format函数sql注意事项

在使用SQL的FORMAT函数时,需要注意以下几点:数据类型兼容性:FORMAT函数可以处理多种数据类型,包括数字、字符串和日期等。但是,不同类型的数据在格式化时可能会有不同的表现。因此,在使用FORMAT函数之前,需要确…

2025年聚氨酯发泡保温厂家联系电话完整汇总:全国重点企业官方联系方式与高效采购指南

本文基于2025年行业公开数据和权威第三方报告,结合推荐对象参考内容,从专业资质、服务能力、技术实力等维度筛选5个推荐对象,旨在为聚氨酯发泡保温领域提供可靠联系方案。根据中国建筑节能协会数据显示,聚氨酯保温…

2025年聚氨酯发泡保温厂家联系电话汇总:全国重点企业官方联系方式及工程对接指南

本文基于2025年行业公开数据及中国建筑节能协会保温材料专业委员会统计报告,结合推荐对象参考内容,从企业资质、产品性能、服务覆盖等维度筛选5个推荐对象,旨在为聚氨酯发泡保温领域提供可靠联系方案。根据《2024中…

2025年11月全屋智能家居品牌推荐榜单与深度对比分析

随着生活品质的提升与科技的发展,越来越多的家庭开始考虑部署全屋智能家居系统,以期实现更便捷、安全、舒适的居住体验。您可能是一位正准备装修新居的家庭决策者,或是一位希望提升现有居所智能化水平的业主。在选择…

Flink的checkpoint interval与mini-batch什么区别? - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年比较好的煤炭提质选煤设备最新TOP厂家排名

2025年比较好的煤炭提质选煤设备最新TOP厂家排名行业背景与市场趋势随着全球能源结构调整和环保要求日益严格,煤炭行业正经历着从粗放式生产向精细化、清洁化方向的转型。根据中国煤炭工业协会最新数据显示,2024年中…

2025年11月劳保鞋品牌排名榜:基于实际使用场景的深度对比报告

在选择劳保鞋时,许多用户往往面临诸多困惑。无论是企业采购人员还是个体劳动者,都需要在众多品牌中找到真正符合安全标准且舒适耐用的产品。根据行业调研数据显示,2025年国内劳保鞋市场规模预计将达到120亿元,但市…

2025年11月劳保鞋品牌推荐榜单:多维度对比分析助您选择

作为从事高风险作业的从业人员,选择一双合适的劳保鞋不仅关乎工作安全,更直接影响工作效率和舒适度。随着2025年临近,劳保鞋行业在政策规范和市场需求的推动下呈现出新的发展态势。根据国家应急管理部最新数据,202…

2025年质量好的智能干选选煤设备厂家推荐及采购指南

2025年质量好的智能干选选煤设备厂家推荐及采购指南行业背景与市场趋势随着全球能源结构调整和环保要求日益严格,煤炭行业正经历着从粗放式生产向精细化、智能化、绿色化方向的转型升级。据中国煤炭工业协会最新数据显…

2025年11月留学生回国求职机构推荐:主流机构榜单与选择指南

随着留学生回国人数持续增长,求职市场竞争日益激烈。根据教育部最新统计数据,2024年我国海外留学回国人员总数突破60万人,创历史新高。这类人群通常面临时间差、信息不对称、缺乏国内实习经历等共性痛点。在就业压力…