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

使用Google Test(简称gtest)进行C++单元测试是提升代码质量的有效方式。它由Google开发,支持丰富的断言、测试用例组织和参数化测试功能。下面介绍如何在项目中集成并使用gtest的基础用法。
安装与配置gtest
在开始前,需要让gtest库可用。常见方法有通过包管理器安装或从源码编译:
-
Ubuntu/Debian系统:
sudo apt-get install libgtest-dev cmake
注意:这个命令只安装源码,还需自行编译生成库文件。 -
手动编译:
从GitHub仓库克隆后构建:
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)。环境搭好后,写测试变得简单直接。关键是坚持为关键逻辑编写测试用例,逐步形成习惯。











