一、简介
我们熟悉的单元测试框架有很多,比如 gtest, boost.test, catch等,今天以功能完备,文档丰富,比较常用的 gtest 为例子,包括构建、安装、demo, 覆盖率展示等。文章主要面向对单元测试了解不多的小白,更多单元测试内容自己百度吧,内容很多。
注
1、如下内容在个人的腾讯计算云上完成,linux ubuntu系统
2、自行百度的意思是搜索,不是真的百度,能用google最好不要用百度,做开发的都懂。
二、gtest构建和安装
1、源码下载
github仓库地址: GitHub - google/googletest: GoogleTest - Google Testing and Mocking Framework
方法一
如果 git 工具已经安装和配置正确,可以直接用 git 拉取代码
git clone git@github.com:google/googletest.git
方法二
也可以在仓库直接下载源码包到本地解压,我下载的1.8.1版本
2、构建和安装
用 cmake + make 构建和安装其实非常简单,具体可参考官方文档,顺便提一句,大家要习惯看原汁原味的英文官方文档。
https://github.com/google/googletest/blob/main/googletest/README.md
mkdir build
cd buld
cmake ../
make
sudo make install
可以看到我的 gtest 就安装成功了,库文件在 /usr/local/lib 下, 头文件在 /usr/local/include/gteest 和 /usr/local/include/gmock
三、覆盖率工具gcov / lcov
1、什么是 gcov / lcov
gcov是gnu工具集自带的工具,用来统计代码覆盖率,不过只有文本信息, lcov 工具可以理解成 gcov 工具的前端,根据 gcov 的数据生成可视化的报告,可以很直观的来看单元测试的代码覆盖率。更多信息请自行百度。
2、lcov 安装
源码下载和安装指南,请参考:
查看帮助文档ok,说明安装好了
四、demo构建和覆盖率测试
1、demo获取
可以从如下仓库获取一个参考 demo
2、构建和测试
因为我们本地已经安装了 gtest,修改下demo 中的 CMakeLists.txt 内容,注释掉构建 gtest 的内容,把库文件路径和头文件路径加上去。
然后用自带的脚本构建就好了,make_all.sh
构建成功,我们看到 coverage_report 下面已经生成了报告
3、代码覆盖率查看
由于计算云无图形界面窗口,我们将报告拷贝到本地,用浏览器查看即可
总体信息里面有行覆盖率,函数覆盖率,分支覆盖率,这三个数据具体什么以上自行百度,特别是分支覆盖率。
可以看到源文件中具体覆盖到那些行,那些没有被覆盖等。