如何使用gtest为c++代码编写单元测试 Google Test框架入门【工程实践】


用Google Test写C++单元测试的核心是写可测代码、用断言验证行为、自动化执行;推荐FetchContent拉取源码编译,用TEST宏定义测试用例,EXPECT_EQ等断言验证结果。

如何使用gtest为c++代码编写单元测试 google test框架入门【工程实践】

用 Google Test(gtest)为 C++ 项目写单元测试,核心是:写可测代码 + 用断言验证行为 + 自动化执行。不需要宏大的测试架构,从一个 .cpp 文件开始就能跑起来。

一、快速搭建 gtest 环境(以 CMake 项目为例)

推荐用 FetchContent 直接拉取 gtest 源码编译,避免系统级安装或版本冲突:

  • 在项目的 CMakeLists.txt 中加入:
include(FetchContent)
FetchContent_Declare(
  googletest
  URL https://github.com/google/googletest/archive/refs/tags/v1.14.0.zip
)
FetchContent_MakeAvailable(googletest)
<h1>链接测试可执行文件</h1><p>add_executable(my_tests test_main.cpp my_class_test.cpp)
target_link_libraries(my_tests gtest_main gtest)

注意:不用单独编译 gtest 库,FetchContent_MakeAvailable 会自动处理构建依赖;gtest_main 提供了默认的 main(),省去自己写入口函数。

二、写第一个测试用例(TestCase + TEST 宏)

假设有如下待测类:

立即学习“C++免费学习笔记(深入)”;

Magic AI Avatars Magic AI Avatars

神奇的AI头像,获得200多个由AI制作的自定义头像。

Magic AI Avatars 47 查看详情 Magic AI Avatars
// calculator.h
#pragma once
int add(int a, int b);
int multiply(int a, int b);

对应测试文件 calculator_test.cpp

#include "calculator.h"
#include <gtest/gtest.h>
&lt;p>TEST(CalculatorTest, AddPositiveNumbers) {
EXPECT_EQ(add(2, 3), 5);
}</p><p>TEST(CalculatorTest, MultiplyByZero) {
EXPECT_EQ(multiply(7, 0), 0);
EXPECT_EQ(multiply(0, -5), 0);
}
  • TEST(测试套名, 测试名) 是最常用宏,自动生成函数并注册到测试框架
  • EXPECT_EQ 是非致命断言:失败时打印信息但继续执行本测试函数
  • ASSERT_EQ

三、测试类(Test Fixture)管理共享资源

当多个测试需要共用初始化/清理逻辑(如打开文件、构造对象),用测试类更清晰:

class StringHelperTest : public ::testing::Test {
protected:
  void SetUp() override {  // 每个 TEST 运行前调用
    str_ = "hello";
  }
  void TearDown() override { } // 每个 TEST 运行后调用(可选)
<p>std::string str_;
};</p><p>TEST_F(StringHelperTest, LengthIsFive) {
EXPECT<em>EQ(str</em>.length(), 5);
}</p><p>TEST_F(StringHelperTest, StartsWithHe) {
EXPECT<em>TRUE(str</em>.starts_with("he"));
}
  • 继承 ::testing::Test,重写 SetUp/TearDown
  • TEST_F 替代 TEST,第一个参数必须是该类名
  • 每个测试运行在独立实例上,成员变量互不干扰

四、运行与调试技巧

  • 编译后直接运行可执行文件:./my_tests,默认输出简洁结果
  • 加参数查看详情:./my_tests --gtest_print_time --gtest_color=yes
  • 只运行匹配名字的测试:./my_tests --gtest_filter=*Add*./my_tests --gtest_filter=CalculatorTest.*
  • 在 IDE(如 CLion / VS Code)中配置运行目标,点击 ▶️ 即可单步调试测试函数
  • 遇到 “undefined reference to testing::InitGoogleTest”?检查是否链接了 gtest_main,且未重复定义 main()

不复杂但容易忽略:测试命名要有业务含义(比如 ParseJson_InvalidInput_ThrowsException),比 Test1 更易维护;每个 TEST 只验证一个关注点,避免堆砌多个断言掩盖真正问题。

以上就是如何使用gtest为c++++代码编写单元测试 Google Test框架入门【工程实践】的详细内容,更多请关注其它相关文章!


# 就能  # seo技术费用接单乐云seo  # 海市科技网站建设  # 重庆网站建设开发哪家好  # 石狮手机网站推广  # 自助建设外贸网站  # 邢台短视频seo  # 嘉兴seo百度优化  # 绥阳县关键词搜索排名  # 西安大型网站seo  # 企业网站优化效果  # 要有  # 不需要  # git  # 可执行文件  # 查看详情  # 第一个  # 如何使用  # 单元测试  # 多个  # 第三方  # google  # c++  # ai  # github  # go 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 《KARDS》冬季扩展包“国土阵线”上线!全新“协力”机制改变战场格局  J*aScript深度克隆:实现高效、健壮与安全的复杂对象复制  抖音猜你想搜能说明对方搜过吗  智学网app怎么登录忘记密码_智学网app忘记密码找回与重新登录操作方法  画质怪兽120帧安卓和平精英免费版  Eclipse开发J*a快速入门  照片整理的黄金法则是怎样的? 理解“收集-筛选-归档-备份”四步流程  Win10关闭UAC用户账户控制的方法 Win10降低安全提示等级【技巧】  汽车之家网页版免费登录_汽车之家官网首页直接进入  QQ网页版入口导航 QQ网页版在线访问通道  快递查询,一键速查  研招网官方网站正版登录网址_中国研究生招生信息网官网首页  折叠屏手机充不进电是什么问题? 特殊结构带来的维修难点  《火影忍者:木叶高手》快速升级攻略  《合金装备4》有望推出重制版!制作人发话了  免费占卜在线神算_免费占卜手机神算  创建快捷方式启动系统保护  秋风萧瑟洪波涌起中的萧瑟指的是什么  韩小圈网页版PC端入口 韩小圈网页版官方网站入口  PHP odbc_fetch_array 返回值处理:如何正确访问嵌套数组元素  学习通网页版课程打不开_课程无法访问时的解决方法  iPhone 13 Pro Max如何设置桌面小组件_iPhone 13 Pro Max小组件添加指南  网易云音乐闹钟铃声设置教程  Animex动漫社社登录官网 Animex动漫社资源社入口直达  J*a实现任务清单管理_集合框架综合入门练手  海棠阅读登录教程_详细讲解海棠登录操作  word文档中的分隔符有哪些不同类型和用途_Word分隔符类型与用途方法  Python定时发送QQ消息  鲨鱼剧场app金币获取方法  AffinityDesigner图层蒙版怎么用_AffinityDesigner图层蒙版设计应用  《理想汽车》权限管理设置方法  全球各国上班时间表外贸邮件时间  原子笔记app误删找回教程  《宝可梦大集结》S4冠军之路开始时间介绍  铁路12306座位怎么选_12306官方选座操作方法  《淘票票》添加到苹果钱包教程  如何快速去除厨房重油污? 2025年最好用的厨房清洁剂推荐  包子漫画官网链接官方地址 包子漫画在线观看官网首页入口  PHP 4 函数中引用参数的默认值限制与解决方案  TikTok视频播放不流畅怎么办 TikTok视频播放优化方法  mysql归档数据怎么导出为csv_mysql归档数据导出为csv文件的方法  c++如何链接Boost库_c++准标准库的集成与使用  mysql怎么查询数据_mysql基础查询语句使用教程  《万兴喵影》导出视频方法  怎样设置开机后自动运行某个程序_Windows启动文件夹与任务计划【自动化】  J*aScript包管理器_Npm与Yarn对比  咸鱼怎么设置仅粉丝可见的动态_咸鱼动态粉丝可见设置方法  如何高效地基于键列值映射DataFrame中的多个列  Microsoft Edge网页字体太淡看不清怎么办_Microsoft Edge字体渲染优化技巧  PPT智能排版生成入口 免费PPT内容自动生成平台 

 2025-12-17

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.