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

用 Google Test(gtest)为 C++ 项目写单元测试,核心是:写可测代码 + 用断言验证行为 + 自动化执行。不需要宏大的测试架构,从一个 .cpp 文件开始就能跑起来。
推荐用 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(),省去自己写入口函数。
假设有如下待测类:
立即学习“C++免费学习笔记(深入)”;
Magic AI Avatars
神奇的AI头像,获得200多个由AI制作的自定义头像。
47
查看详情
// 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> <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 是非致命断言:失败时打印信息但继续执行本测试函数当多个测试需要共用初始化/清理逻辑(如打开文件、构造对象),用测试类更清晰:
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.*
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 】
相关推荐:
《盗墓笔记手游》技能介绍
PHP odbc_fetch_array 返回值处理:如何正确访问嵌套数组元素
美发店速赢秘籍
豆包AI怎样为教育场景定制答疑逻辑_为教育场景定制豆包AI答疑逻辑方案【方案】
批改网网页版登录 批改网电脑版学生登录入口
Flexbox布局:实现粘性导航与底部页脚的完美结合
抖音火山版如何进行提现
解决PHP MySQL数据库更新无响应:SQL查询语法错误解析
excel怎么计算平均值 excel平均函数*ERAGE使用教学
高效调试PHP大型嵌套数组:JSON序列化与可视化工具实践
键盘保修需要什么_键盘售后维修流程
win11自带录屏文件保存在哪里 Win11 Game Bar录制视频默认路径【分享】
苹果官网国补入口在哪
Golang如何使用crypto/md5生成哈希_Golang MD5哈希生成方法
谷歌浏览器官网地址整理_谷歌浏览器新版直连2026稳定访问
《异星探险家》古怪的物品作用介绍
Python测试中模块导入路径解析的最佳实践
作业帮网页版不用下载入口 在线问老师快速答疑
《理想汽车》权限管理设置方法
《新三国志曹操传》游历事件袁尚突围攻略
b站如何管理订阅_b站订阅标签分类管理
可米酷漫画在线阅读入口_ 可米酷漫画官网直达链接
PySimpleGUI中实现键盘按键与按钮事件绑定教程
京东快递包裹信息查询入口 京东快递官方查询平台入口
晨报|开发商暗示《空洞骑士:丝之歌》DLC开发中 《合金装备4》有望重制
《下一站江湖2》心法融合技巧
HTML Canvas文本样式定制指南:解决外部字体加载与应用难题
126邮箱网页在线登录2025_126邮箱网页版入口官方地址
PHP中获取HTTP响应状态消息:方法与限制
qq音乐官方网站入口_qq音乐在线听歌网页版链接
Golang中的rune与byte类型区别是什么_Golang字符与字节处理详解
mail.qq.com登录入口 QQ邮箱网页版直达
《procreate》绘制渐变效果教程
《画加》约稿流程
使用Selenium在无头Chrome中交互动态菜单和复选框的策略
在Spring Boot Thymeleaf中利用布尔属性实现容器的条件显示
圆通快递包裹轨迹查询 圆通速递快件实时位置跟踪
win11如何运行chkdsk命令 Win11检查和修复磁盘逻辑错误教程【修复】
win11讲述人怎么关闭 Win11屏幕朗读辅助功能禁用方法【技巧】
《鹿路通》退余额方法
WPS长文档分栏排版不乱方法_WPS分栏+分节符报纸排版教程
如何测试您的网站全球打开速度-网站海外测速工
《浙里办》电子发票开具方法
解决Windows上Composer PATH变量冲突导致的命令无法识别问题
C++如何使用CMake构建项目_C++ CMakeLists.txt编写入门教程
word邮件合并怎么插入个性化图片_Word邮件合并插入个性化图片方法
word文档行距怎么调?word文档调行距的操作步骤
抖音视频如何添加标题?添加标题有哪些好处?
Excel如何快速合并单元格内容_Excel文本合并与函数操作技巧
原子笔记app误删找回教程
2025-12-17
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。