首先安装配置gtest,然后编写测试用例并使用TEST宏定义测试,通过EXPECT_EQ等断言验证结果,最后编译链接运行测试程序,输出显示1个测试通过。

使用Google Test(简称gtest)进行C++单元测试是提升代码质量的有效方式。它由Google开发,支持丰富的断言、测试用例组织和参数化测试功能。下面介绍如何在项目中集成并使用gtest的基础用法。
安装与配置gtest
在开始前,需要让gtest库可用。常见方法有通过包管理器安装或从源码编译:
Ubuntu/Debian系统:
sudo apt-get install libgtest-dev cmake
注意:这个命令只安装源码,还需自行编译生成库文件。 手动编译:
从GitHub仓库克隆后构建:mkdir build && cd build
cmake ..
make -j
sudo make install
这会将gtest的头文件和库安装到系统目录,便于后续链接。
编写第一个测试用例
假设你有一个简单的加法函数,想对其进行测试:
立即学习“C++免费学习笔记(深入)”;
// math.h
#ifndef MATH_H
#define MATH_H
int add(int a, int b);
#endif// math.cpp
#include “math.h”
int add(int a, int b) {
return a + b;
}
创建测试文件 test_math.cpp:
#include
#include “math.h”
TEST(MathTest, AddFunction) {
EXPECT_EQ(add(2, 3), 5);
EXPECT_EQ(add(-1, 1), 0);
EXPECT_EQ(add(0, 0), 0);
}
说明:
TEST宏定义一个测试用例,格式为 TEST(测试套件名, 测试名称)。EXPECT_EQ用于检查两个值是否相等,若不满足不会立即终止测试。
编译并运行测试
需要将测试代码与gtest库链接。使用g++编译示例:
g++ test_math.cpp math.cpp -lgtest -lgtest_main -pthread -o test_math
./test_math
输出结果类似:
[==========] Running 1 test from 1 test suite.
[———-] Global test environment set-up.
[———-] 1 test from MathTest
[ RUN ] MathTest.AddFunction
[ OK ] MathTest.AddFunction (0 ms)
[———-] 1 test from MathTest (0 ms total)
[———-] Global test environment tear-down
[==========] 1 test from 1 test suite ran. (0 ms total)
[ PASSED ] 1 test.
表明测试通过。
常用断言与测试结构
gtest提供多种断言宏,分为两类:
非致命断言:EXPECT_系列,失败继续执行后续语句。
如 EXPECT_EQ(a,b), EXPECT_TRUE(cond), EXPECT_STREQ(s1,s2) 致命断言:ASSERT_系列,失败则中断当前测试函数。
如 ASSERT_EQ(a,b), ASSERT_FALSE(cond)
还可以组织多个测试到同一个套件中:
TEST(MathTest, SubFunction) {
// 可添加其他函数测试
}
基本上就这些。掌握基础后可进一步学习参数化测试、死亡测试和Mock(配合gmock)。环境搭好后,写测试变得简单直接。关键是坚持为关键逻辑编写测试用例,逐步形成习惯。
以上就是c++++怎么使用Google Test框架进行测试_c++单元测试框架gtest基础用法的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1484048.html
微信扫一扫
支付宝扫一扫