googletest入门

2023-11-11

googletest入门

1、Windows上编译生成gtest.lib静态库

1.1、首先在github上下载Googletest1.8.0版本

https://github.com/google/googletest/releases/tag/release-1.8.0

1.2、解压并创建build目录
在这里插入图片描述

1.3、使用cmake gui生成sln等文件

这里选择本地vs的版本,根据最终使用vs生成对应的gtest.lib等静态库。

2、概念的描述和simple demo

详细文档:https://google.github.io/googletest/primer.html

2.1、Test,Test Suite,Test Case

google一开始也是使用的TestCase术语(term)来组织相关的测试用例,一些(ISTQB)组织和其他的书籍中使用Test Suite这个术语(term)。

2.2、基本概念

使用googletest,我们通过写断言(assertions)语句来检测一个条件是否为true。一个断言的结果可以是成功,非致命失败,致命失败。如果一个致命失败发生,它会中断当前函数,否者程序继续正常运行。

Tests使用断言来验证被测试代码的行为,如果一个测试crash了它会失败;否则就是成功。

一个Test Suite包含一个或多个测试用例。我们可以组织一个测试用例进入到一个TestSuite中。当多个测试用例在一个test suite中共享一个对象或子进程时,可以将它们放入到test fixture类中。

一个测试程序可以包含多个test suites。

2.3、ASSERT和EXPECT选择

2.3.1、ASSERT

如果测试用例失败了它会生成致命错误并终止当前函数;

2.3.2、EXPECT

EXPECT会生成非致命错误,不会终止当前函数。通常情况下EXPECT更好有点,允许一个测试中出现多处错误。但是如果问题出现时再继续没有意义就可以使用ASSERT。

2.3.3、自定义异常描述

ASSERT_EQ(x.size(), y.size()) << "Vectors x and y are of unequal length";

for (int i = 0; i < x.size(); ++i) {
  EXPECT_EQ(x[i], y[i]) << "Vectors x and y differ at index " << i;
}

如果是wchar这种类型,会被自动转成utf8的。

2.4、simple demo

#include <gtest\gtest.h>

int Factorial(int n)
{
	return n + 1;
}

TEST(FactorialTest, HandlesZeroInput){
	EXPECT_EQ(Factorial(0), 1);
}

TEST(FactorialTest, HandlesPositiveInput){
	EXPECT_EQ(Factorial(0), 1);
	EXPECT_EQ(Factorial(1), 1);
	EXPECT_EQ(Factorial(2), 2);
	EXPECT_EQ(Factorial(3), 6);
}

int main(int argc,char**argv)
{
	::testing::InitGoogleTest(&argc, argv);
	return RUN_ALL_TESTS();
}

test fixture使用TEST_F()详见https://google.github.io/googletest/primer.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

googletest入门 的相关文章

  • 比Mojo慢68000倍,Python性能差的锅该给GIL吗?

    关注并星标腾讯云开发者 每周1 鹅厂工程师带你审判技术 第3期 李志瑞 天使还是魔鬼 聊聊 Python GIL 9 月 7 日 新兴编程语言 Mojo 正式发布 Mojo 的最初设计目标是比 Python 快 35000 倍 近期该团队表
  • Unity Hub登录无响应

    以下是我遇到的问题以及解决方案 在此之前这篇博文说的也很不错 可以参考一下 Unity Hub 3 登录无响应 无法登录 解决方式 主要是看能不能弹出来登录窗口 找了半天的解决方案 最终发现是默认浏览器的锅 去设置里改一下web浏览器 我用

随机推荐

  • web性能测试

    专业的软件测试工程师至少要掌握一到两种测试工具 而作为普通软件开发者 或多或少掌握一些测试方法和技巧 随着用户对科技产品用户体验度的上升 产品发布前的测试工作变得尤为重要 工欲善其事必先利其器 下面本文就推荐五款非常流行的Web性能测试工具
  • 对126邮箱进行自动化测试

    打开126邮箱页面 输入邮箱和密码 并点击企业邮箱 from selenium import webdriver import time dr webdriver Chrome dr get https mail 126 com time
  • [日记]LeetCode算法·二十五——二叉树⑤ AVL树(插入+删除)附代码实现

    本章的代码实现基于上一篇BST与优先队列的基类进行平衡二叉树 即AVL树 文章目录 AVL的概念 AVL查询效率 AVL的插入 1 插入节点 2 更新平衡因子BF 3 旋转调整树的结构 3 1 LL 右旋 3 2 RR 左旋 3 3 LR
  • 分布式系统数据同步问题

    分布式系统 通过数据冗余 来保证数据的安全 要写一个分布式系统 一道绕不过去的坎 那就是数据同步 同步 这两个字 折磨死了很多人 是同步 还是异步 是push 还是pull 谁是master 谁是slave 下线会怎样 上线了又会怎样 中心
  • 11个值得珍藏的4K高清壁纸网站推荐

    前言 由于前几天因需求须找一些视觉素材 翻来覆去整了一些 整理了10个图片素材网站可以给大家收藏使用 作为打开电脑 or 手机第一眼就看到的桌面 给它设置一个赏心悦目的桌面壁纸还是必不可少的 下面分享了 10 个值得珍藏的高清桌面壁纸网站
  • Solidworks渲染技巧如何不显示边线--显示样式设定

    如上图是带边线的显示 如果要出ps效果图 这样的边线存在会让效果图显得难看 因为默认是选定了带边线上色的显示样式 只要改成 上色 第二种的显示样式 即可不会带边线 另外如果想得到纯白色的背景色 选择应用布景选单白色 快速选择渲染颜色的技巧
  • protobuf安装教程

    protobuf安装 一 Windows下安装 下载protobuf 配置环境变量 检查是否安装成功 二 Linux下安装 下载protobuf 安装protobuf 检查是否安装成功 一 Windows下安装 下载protobuf 下载地
  • 在浏览器加载完毕后,自动播放视频:出现play() failed because the user didn't interact with the document first.错误

    问题 test html 30 Uncaught in promise DOMException play failed because the user didn t interact with the document first ht
  • 查看nginx版本号的几种方法

    1 查看服务器上安装的nginx版本号 主要是通过nginx的 v或 V选项 查看方法如下图所示 v 显示 nginx 的版本 V 显示 nginx 的版本 编译器版本和配置参数 root zq nginx V nginx version
  • 欧拉角、四元数、旋转矩阵推导及相互关系

    Tags SLAM 一 旋转与旋转矩阵 1 2D旋转 2 3D旋转 二 欧拉角 三 四元数 四 相互转换 1 四元数转旋转矩阵 2 旋转矩阵转四元数 3 欧拉角转旋转矩阵 4 旋转矩阵转欧拉角 5 欧拉角转四元素 6 四元数转欧拉角 五 参
  • Python循环语句(while)(for)经典简单练习题

    求100以内所有偶数的和 sum 0 定义求和的数从0开始 for i in range 0 101 2 利用for循环语句定义i在0到100之间 由左 闭右开的原则 i可以取到0 但是取不到101 故i在0到100之间 再定义每两 个数之
  • vue3学习心得

    关注公众号可获得更多干货 一 vue3是如何变快的 1 diff 算法 Vue2中的虚拟DOM是进行全量对比 Vue3新增了静态标记 PatchFlag 说明 与上次虚拟节点对比 只对比带有静态标记的节点 并且通过flag的信息能得知当前要
  • android学习之基于百度地图的地点检索和标记

    在现在的生活之中 地图越来越重要 作为一个普通的程序员 我们不可能自己去编写一个地图 所以 这篇文章写的是关于如何利用百度的第三方框架来写自己的程序 首先我们需要成为百度开发者 然后下载相关的SDK 在百度里面搜索百度地图 然后进入百度ap
  • 头疼的IE6 js 的 语法错误。

    一提交表单就出问题了 调试也没有用 始终显示461行 的语法错误 怀疑IE6做的真弱智了 后来解决问题了 具体原因 ie6中submit click 方式提交form不成功 但是在高版本的ie中提交没有问题 让我非常的费解 后来查询资料后发
  • Ubuntu18.04+RTX2080Ti+cuda10+tensorflow1.12(解决了tensorflow.python.framework.errors问题)

    基本是按照这篇 Ubuntu18 04 RTX2080 cuda10 tensorflow安装的 链接 https blog csdn net weixin 40859436 article details 83152249 但是出现了一些
  • 从UE4到UE5:新特性的限制

    Nanite 原理 划分culster 按层级进行三角形的culling和lod selection HLOD 基于compute shader 和N卡的mesh shader同目的不同路 纯软件和硬件路线 开启 导入时勾选build na
  • nacos+宝塔 微服务线上和本地相互调用

    使用场景 比如本地有多个微服务 但部分微服务已经不需要改动了 每次调试都要起一大堆的服务 麻烦不说 还卡的要死 所以可以把一些微服务直接放到云服务器上 比如现在我有个Oauth2的认证服务器需要放到云服务器上 实现步骤 1修改配置 spri
  • Linux ubuntu18.04使用ubuntu-drivers autoinstall安装nvidia驱动后紫屏黑屏卡在主板logo无法进系统

    ubuntu 18 04 GTX 1080TI 双显卡 主要是显卡驱动的问题 解决过程 仅供参考 备份文件 重装ubuntu 18 04 再安装驱动 390 138 搞定 ubuntu drivers devices sudo add ap
  • MyISAM和InnoDB存储引擎的区别

    目录 前言 存储引擎 区别 事务 外键 表单的存储 数据查询效率 数据更新效率 如何选择 前言 MyISAM和InnoDB是使用MySQL最常用的两种存储引擎 在5 5版本之前默认采用MyISAM存储引擎 从5 5开始采用InnoDB存储引
  • googletest入门

    googletest入门 1 Windows上编译生成gtest lib静态库 1 1 首先在github上下载Googletest1 8 0版本 https github com google googletest releases ta