当前位置: 首页 > news >正文

gtest 库的安装和使用

目录

介绍

安装

使用


介绍

        官方文档:GoogleTest 入门 |GoogleTest 谷歌测试

        gtest 库是谷歌开源的 C++测试单元框架,方便我们测试程序的正确性。

安装

sudo apt-get install libgtest-dev

使用

GTest 中的断言的宏可以分为两类:
ASSERT_ 系列:如果当前点检测失败则退出当前函数
EXPECT_ 系列:如果当前点检测失败则继续往下执行
bool 值检查
ASSERT_TRUE ( 参数 ) ,期待结果是 true
ASSERT_FALSE ( 参数 ) ,期待结果是 false
数值型数据检查
ASSERT_EQ ( 参数 1 ,参数 2) ,传入的是需要比较的两个数 equal
ASSERT_NE ( 参数 1 ,参数 2) not equal ,不等于才返回 true
ASSERT_LT ( 参数 1 ,参数 2) less than ,小于才返回 true
ASSERT_GT ( 参数 1 ,参数 2) greater than ,大于才返回 true
ASSERT_LE ( 参数 1 ,参数 2) less equal ,小于等于才返回 true
ASSERT_GE ( 参数 1 ,参数 2) greater equal ,大于等于才返回 true
TEST(测试名称, 测试样例名称)
{//...
}TEST(测试名称, 测试样例名称)
{//...
}TEST(测试名称, 测试样例名称)
{//...
}int main(int argc, char* argv[])
{//gtest 框架初始化testing::InitGoogleTest(&argc, argv);//调用测试套件return RUN_ALL_TESTS();
}

        testing::InitGoogleTest 函数用来初始化,RUN_ALL_TESTS 宏用来调用所有测试单元

        TEST 是一个宏,TEST 里面的内容就是要测试的内容。第一个参数是测试名称,如果不同的TEST 第一个参数相同,就属于同一个测试套件,第二个参数是测试的样例名称。

        举例来说,我们要测试一个计算器类,该类有加法函数,减法函数,乘法函数,除法函数。我们可以写四个 TEST 宏来测试该类。

#include <gtest/gtest.h>
class Calculator
{public:int add(int x, int y){return x + y;}int subtract(int x, int y){return x - y;}int multiply(int x, int y){return x * y;}int division(int x, int y){return x / y;}
};TEST(Calculator_Test, 加法测试)
{Calculator c;ASSERT_EQ(c.add(10, 20), 30);
}
TEST(Calculator_Test, 减法测试)
{Calculator c;ASSERT_EQ(c.subtract(20, 10), 10);
}
TEST(Calculator_Test, 乘法测试)
{Calculator c;ASSERT_EQ(c.multiply(20, 10), 3);
}TEST(Calculator_Test, 除法测试)
{Calculator c;ASSERT_EQ(c.division(20, 10), 1);
}int main(int argc, char* argv[])
{//gtest 框架初始化testing::InitGoogleTest(&argc, argv);//调用测试套件return RUN_ALL_TESTS();
}

http://www.xdnf.cn/news/529759.html

相关文章:

  • 【保姆级】Nginx简介以及安装
  • vue3中element-plus修改el-tooltip的宽度
  • vue2使用three.js实现一个旋转球体
  • AI自媒体封面生成系统
  • c++字符串常用语法特性查询示例文档(二)
  • HarmonyOS开发样式布局
  • web常见的攻击方式
  • UniApp 实现的文件预览与查看功能#三方框架 #Uniapp
  • 阻塞队列:线程安全与生产者消费者模型解析
  • nginx 流量控制
  • map与set封装
  • Web安全基础
  • 十三、面向对象底层逻辑-Dubbo序列化Serialization接口
  • MacBook连接不上星巴克Wi-Fi的解决方法
  • 《Effective Python》第三章 循环和迭代器——在遍历参数时保持防御性
  • 江协科技EXTI外部中断hal库实现
  • 需求频繁变更?AI 驱动的自动化解决方案实践
  • 企业销售管理痛点解析与数字化解决方案
  • Unity 如何使用Timeline预览、播放特效
  • 第十六届蓝桥杯复盘
  • C#中的ThreadStart委托
  • 软件架构风格系列(7):闭环控制架构
  • 基于不透光法的柴油机排放精准监测
  • Android13 以太网(YT8531)
  • 【JavaScript】用 Proxy 拦截对象属性
  • Xshell实战:远程连接VMware CentOS7虚拟机与高效运维指南——从零配置到自动化操作,解锁Xshell的核心价值
  • Bootstrap 5 容器与网格系统详解
  • 项目删除了,为什么vscode中的git还是存在未提交记录,应该怎么删除掉
  • vue3个生命周期解析,及setup
  • 遨游科普:三防平板是什么?有什么作用?