0

0

C++如何进行单元测试覆盖率分析_结合gcov和lcov生成C++代码测试报告

裘德小鎮的故事

裘德小鎮的故事

发布时间:2025-12-18 13:21:06

|

596人浏览过

|

来源于php中文网

原创

使用gcov和lcov可实现C++单元测试覆盖率分析:1. 安装GCC、gcov、lcov并用-fprofile-arcs -ftest-coverage编译;2. 运行测试生成.gcda文件;3. 用lcov收集数据并生成HTML报告;4. 可集成至CI/CD持续监控。

c++如何进行单元测试覆盖率分析_结合gcov和lcov生成c++代码测试报告

在C++项目中进行单元测试覆盖率分析,常用工具gcovlcov。gcov 是 GCC 自带的代码覆盖率分析工具,而 lcov 是对 gcov 的封装,能生成更直观的 HTML 报告。结合这两个工具,可以清晰地看到哪些代码被执行、哪些未被覆盖。

1. 环境准备与编译配置

要使用 gcov 和 lcov,首先确保已安装以下工具:

  • GCC(支持 -fprofile-arcs -ftest-coverage 编译选项)
  • gcov(通常随 GCC 安装)
  • lcov(需单独安装)

在 Ubuntu/Debian 上可通过以下命令安装:

sudo apt-get install gcc gcov lcov

编译 C++ 代码时必须添加特殊标志以启用覆盖率数据收集:

立即学习C++免费学习笔记(深入)”;

g++ -fprofile-arcs -ftest-coverage -g -O0 your_test.cpp -o your_test
  • -fprofile-arcs:在运行时记录执行路径
  • -ftest-coverage:生成 .gcno 文件用于覆盖率分析
  • -g:包含调试信息
  • -O0:关闭优化,避免代码被内联或删除影响覆盖率准确性

2. 运行测试并生成原始覆盖率数据

编译完成后运行你的可执行程序(即单元测试):

./your_test

运行后会在当前目录生成多个 .gcda 文件(每个源文件一个),这些文件记录了实际执行情况。

此时你可以用 gcov 直接查看单个文件的覆盖率:

FreeTTS
FreeTTS

FreeTTS是一个免费开源的在线文本到语音生成解决方案,可以将文本转换成MP3,

下载
gcov your_source.cpp

会输出 your_source.cpp.gcov 文件,其中每行前的数字表示该行被执行次数,##### 表示未执行。

3. 使用 lcov 生成可视化报告

lcov 能收集所有 .gcda 和 .gcno 数据,生成汇总报告并输出为 HTML 页面。

步骤如下:

  • 清空旧数据(可选)
  • lcov --directory . --zerocounters
  • 收集覆盖率数据
  • lcov --capture --directory . --output-file coverage.info
  • 过滤掉系统头文件和无关代码(如测试框架)
  • lcov --remove coverage.info '/usr/*' 'test/*' --output-file coverage.info
  • 生成 HTML 报告
  • genhtml coverage.info --output-directory ./coverage_report

完成后,在 ./coverage_report 目录中打开 index.html 即可查看图形化覆盖率报告,包括文件列表、行覆盖率、函数覆盖率等。

4. 集成到构建流程中的建议

将覆盖率分析加入 CI/CD 流程能持续监控测试质量。例如在 GitHub Actions 或 Jenkins 中添加脚本:

g++ -fprofile-arcs -ftest-coverage -O0 -g test.cpp -o test
./test
lcov --capture --directory . --output-file coverage.info
lcov --remove coverage.info '/usr/*' --output-file coverage.info
genhtml coverage.info --output-directory ./coverage_report

上传 coverage_report 到静态服务器或作为构建产物下载查看。

基本上就这些。只要编译时开启对应选项,运行测试后用 lcov 处理数据,就能获得清晰的 C++ 代码覆盖率报告。这对提升单元测试有效性非常有帮助。

相关专题

更多
html版权符号
html版权符号

html版权符号是“©”,可以在html源文件中直接输入或者从word中复制粘贴过来,php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

616

2023.06.14

html在线编辑器
html在线编辑器

html在线编辑器是用于在线编辑的工具,编辑的内容是基于HTML的文档。它经常被应用于留言板留言、论坛发贴、Blog编写日志或等需要用户输入普通HTML的地方,是Web应用的常用模块之一。php中文网为大家带来了html在线编辑器的相关教程、以及相关文章等内容,供大家免费下载使用。

653

2023.06.21

html网页制作
html网页制作

html网页制作是指使用超文本标记语言来设计和创建网页的过程,html是一种标记语言,它使用标记来描述文档结构和语义,并定义了网页中的各种元素和内容的呈现方式。本专题为大家提供html网页制作的相关的文章、下载、课程内容,供大家免费下载体验。

470

2023.07.31

html空格
html空格

html空格是一种用于在网页中添加间隔和对齐文本的特殊字符,被用于在网页中插入额外的空间,以改变元素之间的排列和对齐方式。本专题为大家提供html空格的相关的文章、下载、课程内容,供大家免费下载体验。

245

2023.08.01

html是什么
html是什么

HTML是一种标准标记语言,用于创建和呈现网页的结构和内容,是互联网发展的基石,为网页开发提供了丰富的功能和灵活性。本专题为大家提供html相关的各种文章、以及下载和课程。

2895

2023.08.11

html字体大小怎么设置
html字体大小怎么设置

在网页设计中,字体大小的选择是至关重要的。合理的字体大小不仅可以提升网页的可读性,还能够影响用户对网页整体布局的感知。php中文网将介绍一些常用的方法和技巧,帮助您在HTML中设置合适的字体大小。

505

2023.08.11

html转txt
html转txt

html转txt的方法有使用文本编辑器、使用在线转换工具和使用Python编程。本专题为大家提供html转txt相关的文章、下载、课程内容,供大家免费下载体验。

312

2023.08.31

html文本框代码怎么写
html文本框代码怎么写

html文本框代码:1、单行文本框【<input type="text" style="height:..;width:..;" />】;2、多行文本框【textarea style=";height:;"></textare】。

425

2023.09.01

PHP WebSocket 实时通信开发
PHP WebSocket 实时通信开发

本专题系统讲解 PHP 在实时通信与长连接场景中的应用实践,涵盖 WebSocket 协议原理、服务端连接管理、消息推送机制、心跳检测、断线重连以及与前端的实时交互实现。通过聊天系统、实时通知等案例,帮助开发者掌握 使用 PHP 构建实时通信与推送服务的完整开发流程,适用于即时消息与高互动性应用场景。

2

2026.01.19

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
HTML教程
HTML教程

共500课时 | 4.8万人学习

php初学者入门课程
php初学者入门课程

共10课时 | 0.6万人学习

RunnerGo从入门到精通
RunnerGo从入门到精通

共22课时 | 1.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号