Google Test 入门关键是快速跑通首个测试用例。需下载源码、用 CMake 编译生成 libgtest.a 和 libgtest_main.a;编写含 TEST 宏的测试文件;链接库并添加 -pthread 编译运行;成功输出 2 个测试通过结果。

Google Test(GTest)是 C ++ 最主流的单元测试框架,轻量、跨平台、与主流构建系统兼容好。入门关键不是写复杂断言,而是快速跑通第一个测试用例——从编译链接到执行验证,一步都不能跳。
1. 下载与编译 GTest
GTest 官方推荐以源码方式集成(避免 ABI 兼容问题)。从 GitHub 仓库 克隆或下载最新 release 源码:
- 解压 后进入
googletest目录,建议用 CMake 构建(支持 Windows/Linux/macOS) - 新建
build/子目录,运行:cmake -DCMAKE_BUILD_TYPE=Release .. && cmake --build . - 构建完成后,你会得到
libgtest.a(静态库)和libgtest_main.a(含默认 main 函数)
2. 编写第一个测试文件
创建 hello_test.cpp,内容如下:
#include <gtest/gtest.h> // 被测函数(可放在单独头文件中)int add(int a, int b) {return a + b;} // 测试用例:TEST(测试套名, 测试名) TEST(AddTest, PositiveNumbers) {EXPECT_EQ(add(2, 3), 5); EXPECT_EQ(add(0, 0), 0); } TEST(AddTest, NegativeNumbers) {EXPECT_EQ(add(-1, -1), -2); }
注意:
– TEST 宏自动生成测试函数和注册逻辑,无需手动写 main()
– EXPECT_* 是非致命断言(失败继续执行),ASSERT_* 是致命断言(失败立即退出当前测试)
3. 编译并运行测试
假设 GTest 头文件在 ./googletest/include,静态库在 ./googletest/build/lib:
立即学习“C++ 免费学习笔记(深入)”;
- Linux/macOS 示例命令:
g++ -I./googletest/include hello_test.cpp -L./googletest/build/lib -lgtest -lgtest_main -pthread -o hello_test && ./hello_test - Windows(MSVC)需链接
gtest.lib和gtest_main.lib,并启用多线程运行时(/MT 或 /MD) - 成功运行会输出类似:
[==========] Running 2 tests from 1 test suite.[RUN] AddTest.PositiveNumbers[OK] AddTest.PositiveNumbers (0 ms)[RUN] AddTest.NegativeNumbers[OK] AddTest.NegativeNumbers (0 ms)
4. 常用断言与进阶提示
基础断言覆盖大多数场景:
-
EXPECT_EQ(val1, val2):比较相等(内置类型或重载了operator==的类) -
EXPECT_TRUE(condition)/EXPECT_FALSE(condition) -
EXPECT_STREQ(str1, str2):C 风格字符串内容比较 -
EXPECT_THROW(statement, exception_type):验证是否抛出指定异常
小技巧:
– 使用 TEST_F 配合测试夹具(fixture)管理共享资源(如临时文件、对象实例)
– 添加 --gtest_filter=AddTest.* 运行指定测试子集
– 加 --gtest_list_tests 查看所有已注册测试用例名
基本上就这些。不复杂但容易忽略的是链接 -pthread(Linux/macOS 必须)和正确包含头文件路径。跑通第一个 EXPECT_EQ 后,剩下的就是按需组织测试逻辑了。