c++ 同时include 一个.h_linux下如何使用gtest框架进行c/c++单元测试

google test(以下简称gtest)是谷歌的开源C++单元测试框架,用来做c/c++的单元测试比较方便。下面对于它在linux下的使用做简单的介绍,同时也作为自己的笔记。因为仅作示例,因此以下过程也比较简单。

准备gtest框架

在github网站下载gtest框架,目录下有以下内容:

├── build-aux

├── CHANGES

├── cmake

├── CMakeLists.txt

├── codegear

├── configure.ac

├── CONTRIBUTORS

├── docs

├── include

├── LICENSE

├── m4

├── make

├── Makefile.am

├── msvc

├── README.md

├── samples

├── scripts

├── src

├── test

└── xcode

现在我们需要将其编译成.o文件

编译生成gtest.o文件:

g++ -o gtest.o -I./include -I./ -c ./src/gtest-all.cc

再生成.a静态库文件:

ar -rv libgtest.a gtest.o

生成的libgtest.a以及该目录include下的头文件都是我们后面测试需要的。

新建测试项目

新建项目目录,比如我创建了一个LeetcodeWithC目录。

同时,在该目录下创建以下三个目录

├── gtest //存放gtest框架内容

├── leetcode //存放项目源代码

├── testcase//存放测试用例代码

└── Makefile

getest目录下有刚才所说的include头文件,lib文件。另外,我们还需要一个main函数文件。放在getst的main下:

105664df9be9d50cdb8673648b24f6fd.png

leetcode目录下新建src目录和include目录,分别用于存放头文件和.c文件
我在include下放了两个头文件,common.h 和leetcode_functions.h
内容分别如下:
common.h

411c4515494027493442275ddb88cbd2.png

leetcode_functions.h

a2839069155753b933d84c27462bb3a5.png

src目录下为项目的.c文件

364de3023ca9ee777b81e632ce5dac87.png

testcase下新建include和src目录
src目录下有测试用例文件leetcode_test.cpp

a42a14cd1e8c70e29ccae1bd624a1afc.png

编译链接

测试之前,需要编译并链接我们得项目代码和测试框架。
编译

97d58fc112ab5c2e759eecde0a634e5a.png

链接

g++ -o main *.o -I./include -L./gtest/lib -lgtest -lpthread

最后生成main文件。

运行测试

运行生成的可执行文件main

./main

运行结果如下:

[==========] Running 1 test from 1 test case.

[----------] Global test environment set-up.

[----------] 1 test from two_sum_test

[ RUN ] two_sum_test.twoSum001

numsSize=4

[ OK ] two_sum_test.twoSum001 (0 ms)

[----------] 1 test from two_sum_test (0 ms total)

[----------] Global test environment tear-down

[==========] 1 test from 1 test case ran. (0 ms total)

[ PASSED ] 1 test.

可以看到,共有一个用例,通过了一个用例

总结

使用gtest框架进行单元测试还是比较方便的,有很多可用的测试方法,具体可以查看官网文档,另外它还有打桩功能,对于其他一些复杂的测试也是可以胜任的。

如果觉得测试结果不直观,还可以结合gcov进行代码覆盖率的测试,从测试报告中可以很清晰的看到用例跑到了哪些代码。

需要C/C++ Linux服务器开发学习资料私信“资料”(资料包括C/C++,Linux,golang技术,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,ffmpeg等),免费分享

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值