c++怎么使用Google Test框架进行测试_c++单元测试框架gtest基础用法


首先安装配置gtest,然后编写测试用例并使用TEST宏定义测试,通过EXPECT_EQ等断言验证结果,最后编译链接运行测试程序,输出显示1个测试通过。

c++怎么使用google test框架进行测试_c++单元测试框架gtest基础用法

使用Google Test(简称gtest)进行C++单元测试是提升代码质量的有效方式。它由Google开发,支持丰富的断言、测试用例组织和参数化测试功能。下面介绍如何在项目中集成并使用gtest的基础用法。

安装与配置gtest

在开始前,需要让gtest库可用。常见方法有通过包管理器安装或从源码编译:

  • Ubuntu/Debian系统:
    sudo apt-get install libgtest-dev cmake
    注意:这个命令只安装源码,还需自行编译生成库文件。
  • 手动编译:
    从GitHub仓库克隆后构建:
mkdir build && cd build
cmake ..
make -j
sudo make install

这会将gtest的头文件和库安装到系统目录,便于后续链接。

编写第一个测试用例

假设你有一个简单的加法函数,想对其进行测试:

// math.h
#ifndef MATH_H
#define MATH_H
int add(int a, int b);
#endif
// math.cpp
#include "math.h"
int add(int a, int b) {
  return a + b;
}

创建测试文件 test_math.cpp:

#include
#include "math.h"

TEST(MathTest, AddFunction) {
  EXPECT_EQ(add(2, 3), 5);
  EXPECT_EQ(add(-1, 1), 0);
  EXPECT_EQ(add(0, 0), 0);
}

说明:
TEST宏定义一个测试用例,格式为 TEST(测试套件名, 测试名称)。EXPECT_EQ用于检查两个值是否相等,若不满足不会立即终止测试。

编译并运行测试

需要将测试代码与gtest库链接。使用g++编译示例:

标贝悦读AI配音 标贝悦读AI配音

在线文字转语音软件-专业的配音网站

标贝悦读AI配音 66 查看详情 标贝悦读AI配音 g++ test_math.cpp math.cpp -lgtest -lgtest_main -pthread -o test_math
./test_math

输出结果类似:

[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from MathTest
[ RUN ] MathTest.AddFunction
[ OK ] MathTest.AddFunction (0 ms)
[----------] 1 test from MathTest (0 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test suite ran. (0 ms total)
[ PASSED ] 1 test.

表明测试通过。

常用断言与测试结构

gtest提供多种断言宏,分为两类:

  • 非致命断言:EXPECT_系列,失败继续执行后续语句。
    如 EXPECT_EQ(a,b), EXPECT_TRUE(cond), EXPECT_STREQ(s1,s2)
  • 致命断言:ASSERT_系列,失败则中断当前测试函数。
    如 ASSERT_EQ(a,b), ASSERT_FALSE(cond)

还可以组织多个测试到同一个套件中:

TEST(MathTest, SubFunction) {
  // 可添加其他函数测试
}

基本上就这些。掌握基础后可进一步学习参数化测试、死亡测试和Mock(配合gmock)。环境搭好后,写测试变得简单直接。关键是坚持为关键逻辑编写测试用例,逐步形成习惯。

以上就是c++++怎么使用Google Test框架进行测试_c++单元测试框架gtest基础用法的详细内容,更多请关注其它相关文章!


# git  # 原阳县网站推广  # 长春网站建设优化哪家好  # 你有  # 多个  # 第一个  # 还可以  # 如何实现  # 如何使用  # 套件  # 进行测试  # c++  # go  # github  # ubuntu  # ai  # google  # 多核  # 单元测试  # 拼多多广告视频网站推广  # 鹤壁网站网络推广哪家好  # 抖音seo怎样优化产品  # 全站推广申请网站  # 企业网站建设教案模板  # 成都定制版网站优化设计  # 南通网站建设功能  # 推广读书视频素材下载网站 


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


相关推荐: pubmed数据库官方主页_pubmed学术论文查找官网直达  圆通快递官网入口查询单号 手机版官方查询入口  电脑视频号|直播|如何分享屏幕  视频号视频怎么提取文案?提取的文案如何优化与使用?  rabbitmq 持久化有什么缺点?  如何在CSS中设置背景图像:一个全面指南  使用document.execCommand实现Web文本编辑器加粗/取消加粗  驱动人生:游戏修复指南  PHP魔术方法__set与__isset:设计考量、性能权衡与静态分析的视角  《崩坏:星穹铁道》3.6版本异相仲裁打法及配队推荐  Excel如何制作月度销售统计图_Excel动态图表制作与控件应用  哈尔滨城市通昵称修改方法  《律学法考》查看学习数据方法  抖音火山版注销账号抖音会注销吗 抖音火山版与抖音账号注销关系  优酷官网登录入口电脑版 优酷官网网址入口  抖音手机分身两个账号怎么切换?分身两个系统是一样的吗?  聚水潭ERP后台管理系统登录 聚水潭ERP官方登录通道  优化长HTML属性值:SonarQube警告与实用策略  HTML Canvas文本样式定制指南:解决外部字体加载与应用难题  《鹿路通》退余额方法  修复UI元素交互障碍:从“开始”按钮到信息框的平滑过渡实现  Windows自带的便笺数据如何备份_防止数据丢失的便利贴迁移教程【干货】  《偃武》甘宁技能详解  铁路12306入口 铁路12306官网版入口登录网址  德邦物流在线查询系统 德邦快递货物运输追踪  Python自动化抓取GBGB赛狗比赛结果:日期范围与赛道筛选教程  uc浏览器官网网页版使用 uc浏览器官网免费在线首页  Selenium自动化:利用键盘模拟解决复杂日期输入框输入问题  招商淘客入门指南  如何在mysql中使用索引提示_mysql索引提示优化方法  苹果SE如何开启单手模式_苹果SE单手操作功能  搜狗浏览器如何查找页面中的文字 搜狗浏览器Ctrl+F页面搜索功能  厨房地面防滑垫的油污怎么洗? 机洗和手洗防滑垫的注意事项  Win10如何关闭开机锁屏界面_Windows10跳过锁屏直接登录设置  手机坏了微信聊天记录怎么导出来 新手机恢复聊天记录技巧  苹果手机聊天记录删除了如何恢复  PHP页面重载后变量状态保持:实现用户档案连续浏览的教程  Win10如何查看已安装的更新补丁 Win10卸载指定更新教程【教程】  小红书如何引流到私信?引流到私信有用吗?  解决PHP MySQL数据库更新无响应:SQL查询语法错误解析  PHP utf8_encode 字符编码转换疑难解析与最佳实践  CodeIgniter 3 连接 SQL Server:正确获取查询结果的教程  在VS Code中利用AI辅助进行代码迁移  使用Google服务账号实现Google Drive API无缝集成与文件访问  漫蛙漫画直连入口 _ manwa官方备用入口实时检测  AO3永久镜像入口开放_AO3最新网址兼容所有浏览器  如何查询个人病历记录  C++ virtual析构函数作用_C++基类虚析构函数防止内存泄漏  铁路12306座位怎么选_12306官方选座操作方法  Go Goroutine调度与并发执行深度解析 

 2025-11-14

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

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

点击免费数据支持

提交您的需求,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.