首页 > 后端开发 > C++ > 正文

C++如何使用Google Test框架进行单元测试?(GTest入门)

裘德小鎮的故事
发布: 2025-12-21 10:19:32
原创
415人浏览过
Google Test入门关键是快速跑通首个测试用例。需下载源码、用CMake编译生成libgtest.a和libgtest_main.a;编写含TEST宏的测试文件;链接库并添加-pthread编译运行;成功输出2个测试通过结果。

c++如何使用google test框架进行单元测试?(gtest入门)

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

Browse AI
Browse AI

AI驱动的网页内容抓取和数据采集工具

Browse AI 105
查看详情 Browse AI

立即学习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.libgtest_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 后,剩下的就是按需组织测试逻辑了。

以上就是C++如何使用Google Test框架进行单元测试?(GTest入门)的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号