GoogleTest安装以及使用

news2024/11/14 16:30:24

文章目录

  • 介绍
  • Ubuntu安装
  • centos7 安装gtest
  • 使用方法
    • 包含gtest/gtest.h头文件
    • 使用TEST()宏定义测试用例
    • 使用Google Test断言进行值检查
    • 使用RUN_ALL_TESTS()宏运行测试
  • 测试代码

介绍

Google Test(也称为gtest)是Google开发的一个用于C++的单元测试库。
它允许开发者方便地编写和运行测试用例,以确保代码的正确性和健壮性。
GoogleTest 提供了一系列的断言宏,如 ASSERT_, EXPECT_ 等,用于验证代码的行为。

Google Test 的特点

  • 易用性:Google Test 提供了一个简单易用的API,让开发者能够快速编写测试用例。
  • 强大的断言:提供了丰富的断言宏来检查各种条件是否满足。
  • 详细的失败报告:当测试失败时,Google Test 能够给出详细的失败信息,便于调试。
  • 灵活的测试组织:支持测试的分组和命名空间,使得大型项目也能很好地组织测试用例。
  • 跨平台:可以在多种操作系统上运行,包括 Windows, Linux, Mac OS X 等。

Ubuntu安装

当前环境
在这里插入图片描述
在这里插入图片描述

下载
https://github.com/google/googletest/archive/release-1.8.0.tar.gz
或者
https://gitee.com/mirrors/googletest/ 
解压
tar -xzvf googletest-release-1.8.1.tar.gz


在这里插入图片描述

cmake .
make
make install

在这里插入图片描述
在这里插入图片描述

centos7 安装gtest

当前环境
在这里插入图片描述
在这里插入图片描述

下载
https://github.com/google/googletest/archive/release-1.8.0.tar.gz
或者
https://gitee.com/mirrors/googletest/ 
解压
tar -xzvf googletest-release-1.8.1.tar.gz
cmake .
make

在这里插入图片描述

使用方法

包含gtest/gtest.h头文件

在测试文件中,首先需要包含Google Test的头文件gtest/gtest.h。

使用TEST()宏定义测试用例

TEST(TestSuiteName, TestName) {  
    // 测试代码  
}
  • TestSuiteName是测试套件的名称,用于将相关的测试用例分组在一起;
  • TestName是具体测试的名称,通常用于描述测试的目的。

使用Google Test断言进行值检查

Google Test提供了一系列的断言宏,如EXPECT_EQ、EXPECT_NE、ASSERT_EQ等,用于在测试体中检查预期值和实际值是否一致。这些断言宏能够帮助你验证代码的行为是否符合预期。

使用RUN_ALL_TESTS()宏运行测试

使用RUN_ALL_TESTS()宏来运行所有定义的测试用例。这个宏会返回一个整数,表示测试运行的结果。如果所有测试都通过了,它会返回0;如果有测试失败,它会返回非0值

测试代码

#include <gtest/gtest.h>  
#include <unistd.h>  
// 定义一个简单的加法函数  
int add(int a, int b) {  
    return a + b;  
}  
  
// 使用TEST()宏定义测试用例  
TEST(AddTest, PositiveNumbers) {  
    EXPECT_EQ(add(1, 2), 3); // 预期add(1, 2)的结果为3  
}  
  
TEST(AddTest, NegativeNumbers) {  
    EXPECT_EQ(add(-1, -2), -3); // 预期add(-1, -2)的结果为-3  
}  
  
// 主函数,用于运行所有测试用例  
int main(int argc, char **argv) {  
    testing::InitGoogleTest(&argc, argv); // 初始化Google Test  
    return RUN_ALL_TESTS(); // 运行所有测试用例  
}

编译

 g++ test_add.cpp -o test_add -lgtest

运行
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2118924.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OPenCV结构分析与形状描述符(5)查找图像中的连通组件的函数connectedComponents()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 connectedComponents 函数计算布尔图像的连通组件标签图像。 该函数接受一个具有4或8连通性的二值图像&#xff0c;并返回 N&#xff0c;即标签…

算法入门-深度优先搜索3

第六部分&#xff1a;深度优先搜索 112.路径总和&#xff08;简单&#xff09; 题目&#xff1a;给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径&#xff0c;这条路径上所有节点值相加等于目标和 targetSum 。如果…

【QT Creator】基本使用

一、常见问题 解答可见以下链接&#xff1a; https://www.cnblogs.com/xia-weiwen/p/10074882.html#title3.1 ** 有关控制台选择构建套件缺失的解决方法可见以下链接 https://blog.csdn.net/xuxu_123_/article/details/131257928 二、如何创建第一个QT项目 第一步&#xf…

一文解答Swin Transformer + 代码【详解】

文章目录 1、Swin Transformer的介绍1.1 Swin Transformer解决图像问题的挑战1.2 Swin Transformer解决图像问题的方法 2、Swin Transformer的具体过程2.1 Patch Partition 和 Linear Embedding2.2 W-MSA、SW-MSA2.3 Swin Transformer代码解析2.3.1 代码解释 2.4 W-MSA和SW-MSA…

Elasticsearch入门安装

1、下载安装 &#xff08;1&#xff09;安装Elasticsearch 下载地址&#xff1a;https://www.elastic.co/cn/downloads/elasticsearch 解压后运行 /bin/elasticsearch.bat 运行后访问 http://127.0.0.1:9200/即可 ps1&#xff1a;若无法访问且控制台打印 received plaintex…

计算机基础之-TCP 别再问我啦

TCP 协议 格式及部分含义根据端口号找到上一层的进程如何解包-整个包长度 ACK应答机制序号-确认序号-实现TCP的可靠传输和流量控制:为什么要有两个字段(序号和确认序号)&#xff1f; 16位窗口大小-缓冲区流量控制16位紧急指针三次握手四次挥手为啥 TIME_WAIT 滑动窗口 协议 格式…

代码随想录冲冲冲 Day40 动态规划Part8

121. 买卖股票的最佳时机 dp[i][0] 代表第i天持有股票手上的金额 dp[i][1] 代表第i天不持有股票手上的金额 初始化&#xff1a; dp[0][0] 持有所以是-prices[0] dp[0][1] 不持有所以是0&#xff1b; 递推公式: dp[i][0] 既然是i天时持有&#xff0c;那么就是之前就持有&…

开放式耳机具备什么特点?2024排行前十的四款百元蓝牙耳机推荐

开放式耳机具有以下特点&#xff1a; 佩戴舒适&#xff1a; 开放式耳机通常不需要插入耳道&#xff0c;能减少对耳道的压迫和摩擦&#xff0c;长时间佩戴也不易产生闷热、疼痛或瘙痒等不适&#xff0c;对于耳道敏感或不喜欢入耳式耳机压迫感的人来说是很好的选择。 这类耳机…

无线通信里的一些参数(dB dBm RSRP RSRQ RSSI SIN) / 天线增益

目录 历史由来dB和dBmRSRP RSRQ RSSI SNRRSSI在实际测试环境中的应用天线增益 详细阅读&#xff1a; 一文搞懂dB、dBm、dBw、dBi的来龙去脉 无线通信中 RSRP RSRQ RSSI SINR的定义和区别 RSRP RSRQ RSSI SNR的含义和区别 历史由来 dB展开应写为decibel&#xff0c;其中“deci…

【震撼】8岁女孩用Cursor编程,你还在等什么

1. Cursor: 革新性的AI代码编辑器 1.1 Cursor的崛起 近期&#xff0c;AI驱动的代码编辑器Cursor在开发者社区中引起了广泛关注。其火爆程度不仅源于AI大咖Andrej Karpathy在社交平台X上的推荐&#xff0c;更因一则令人惊叹的新闻&#xff1a;一位年仅8岁的小女孩利用Cursor和其…

金士顿NV2 2TB假固态硬盘抢救记,RL6577/RTS5765DL量产工具,RTS5765DL+B47R扩容开卡修复

之前因为很长时间不买固态硬盘&#xff0c;没注意到NVME的固态盘也有了假货和扩容盘&#xff0c;花200多块买了个2TB的金士顿NV2固态硬盘&#xff0c;我原本以为NV1的假货最多是用黑片冒充正片&#xff0c;结果没想到NV2居然有扩容的。后来发现是扩容盘的时候&#xff0c;已经过…

C++ 音频

一、采样频率 当前主流的采样频率为22.05KHz、44.1KHz、48KHz 22.05KHz&#xff1a;为FM广播声音品质 44.1KHz&#xff1a;为理论上最高的CD声音品质&#xff08;直播&#xff0c;录像&#xff0c;acc&#xff09; 48KHz&#xff1a;人耳可分辨的最高采样频率 &#xff08;…

使用PXE实现自动化安装rockylinux8.10

PXE 一、简介 实现多台服务器自动化安装系统。 二、部署 这里宿主机是 centos7&#xff0c;PXE 部署的是 rockylinux8.10。宿主机需提前关闭 selinux 和防火墙。 2.1 部署 dhcp 安装 dhcp [roottest-server ~]# yum install -y dhcp修改配置文件 # 复制默认的配置文件 …

极光出席深圳国际人工智能展并荣获“最具投资价值人工智能奖”

9月8-10日&#xff0c;由深圳市工业和信息化局、深圳市发展和改革委员会、深圳市科技创新局、深圳市政务服务和数据管理局、深圳市中小企业服务局共同指导&#xff0c;深圳市人工智能行业协会主办的第五届深圳国际人工智能展正式开幕。作为中国领先的客户互动和营销科技服务商&…

基于人工智能的智能农业监控系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 智能农业是利用现代信息技术和人工智能进行农业生产的优化管理&#xff0c;通过实时监控和预测系统&#xff0c;可以改善作物的生产效…

工控安全需求分析与安全保护工程

工控系统安全威胁与需求分析 工控系统&#xff08;ICS&#xff09;&#xff0c;是由各种控制组件、监测组件、数据处理与展示组件共同构成的对工业生产过程进行控制和监控的业务流程管控系统 分类&#xff1a;离散制造类和过程控制类 工控系统安全保护机制与技术 工控系统安全…

无人机加速度计的详解!!!

一、加速度计的基本定义 加速度计是一种用于测量物体加速度的传感器。它能够感知物体在各个方向上的加速度变化&#xff0c;并将这些变化转换为电信号进行输出。 二、加速度计的工作原理 加速度计的工作原理基于牛顿第二定律&#xff0c;即力等于质量乘以加速度&#xff08;…

Pygame中Sprite类实现多帧动画3-2

3.2.3 设置帧的宽度、高度、范围及列数 通过如图6所示的代码设置帧的宽度、高度、范围及列数。 图6 设置帧的宽度、高度、范围及列数的代码 其中&#xff0c;frame_width、frame_height、rect和columns都是MySprite类的属性&#xff0c;在其__init__()方法中定义&#xff0c;…

计算机毕业设计选题推荐-产品委托配送系统-Java/Python项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

【项目综合】基于 Boost 库的站内搜索引擎(保姆式讲解,小白包看包会!)

目录 一、项目背景 1&#xff09;搜索引擎是什么 2&#xff09;Boost 库是什么 3&#xff09;搜索的结果是什么 二、项目原理 1&#xff09;宏观原理和整体流程 2&#xff09;正序索引与倒序索引 3&#xff09;所用技术栈和项目环境 4&#xff09;项目源码地址&#x…