36K+ 全球开发者的测试神器!Google 出品,质量与信任的代名词!

36K+ 全球开发者的测试神器!Google 出品,质量与信任的代名词!

编码文章call10242025-09-12 16:27:435A+A-

项目概览

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)


! 注意事项

  1. 静态库链接顺序:确保 -lgtest_main 在测试源文件后声明
  2. 线程安全:多线程测试时需显式启用 GTEST_IS_THREADSAFE 宏
  3. 兼容性: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++ 单元测试体系。

点击这里复制本文地址 以上内容由文彬编程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

文彬编程网 © All Rights Reserved.  蜀ICP备2024111239号-4