36K+ 全球开发者的测试神器!Google 出品,质量与信任的代名词!
项目概览
GoogleTest 是 Google 开源的 C++ 单元测试框架,提供丰富的断言库、测试固件(fixtures)、参数化测试等能力,广泛应用于工业级 C++ 项目的测试驱动开发(TDD)中。
项目地址:
https://github.com/google/googletest
核心特性
跨平台支持:兼容 Linux/macOS/Windows 及嵌入式系统
断言扩展:支持 EXPECT_*(非致命错误)与 ASSERT_*(致命错误)两类断言
死亡测试:验证程序崩溃或异常退出行为
参数化测试:通过 TEST_P 实现数据驱动测试
事件监听:支持自定义测试生命周期事件监听器
Mocking 集成:无缝对接 GoogleMock 模拟框架(文档:
https://github.com/google/googletest/blob/main/docs/gmock_cook_book.md)
快速上手
1. 安装依赖
bash
# 克隆仓库
git clone https://github.com/google/googletest.git
cd googletest
# 生成构建文件(以 CMake 为例)
cmake -B build -DCMAKE_CXX_STANDARD=11
cmake --build build
2. 编写测试用例
创建 sample_test.cc 文件,粘贴以下代码(代码块需在编辑器中保持等宽字体显示):
cpp
#include <gtest/gtest.h>
TEST(MathTest, Addition) {
EXPECT_EQ(2 + 3, 5); // 非致命断言
ASSERT_NE(5, 0); // 致命断言(若失败则终止当前测试)
}
TEST(MathTest, Division) {
ASSERT_DEATH({ int x = 1 / 0; }, ".*"); // 死亡测试
}
3. 编译并运行
bash
g++ -std=c++11 sample_test.cc -lgtest -lgtest_main -pthread -o test
./test
关键配置项
C++ 标准支持:需 ≥ C++11
线程安全:默认启用多线程支持(需链接 -pthread)
输出控制:通过 --gtest_output=json:report.json 生成 JSON 报告
项目亮点
超过 100K+ GitHub Stars,行业标准级测试框架
与 Bazel/CMake 构建系统深度集成
提供 XML/JSON 测试报告,便于 CI 集成(如 Jenkins)
! 注意事项
- 静态库链接顺序:确保 -lgtest_main 在测试源文件后声明
- 线程安全:多线程测试时需显式启用 GTEST_IS_THREADSAFE 宏
- 兼容性:GCC ≥ 5.0 / Clang ≥ 3.8 / MSVC ≥ 2015
进阶资源
官方文档:
https://google.github.io/googletest/
高级技巧:
https://github.com/google/googletest/blob/main/docs/advanced.md(如自定义 main() 函数)
Mocking 指南:
https://google.github.io/googletest/gmock_cook_book.html
通过以上步骤,可快速集成 GoogleTest 并构建健壮的 C++ 单元测试体系。