Google单元测试sample分析(二)

本文开始介绍googletest/googletest/sample/sample5_unittest.cc
有关TEST_F测试夹具的使用案例

class QuickTest : public testing::Test {protected:// Remember that SetUp() is run immediately before a test starts.// This is a good place to record the start time.void SetUp() override { start_time_ = time(nullptr); }// TearDown() is invoked immediately after a test finishes.  Here we// check if the test was too slow.void TearDown() override {// Gets the time when the test finishesconst time_t end_time = time(nullptr);// Asserts that the test took no more than ~5 seconds.  Did you// know that you can use assertions in SetUp() and TearDown() as// well?EXPECT_TRUE(end_time - start_time_ <= 5) << "The test took too long.";}// The UTC time (in seconds) when the test startstime_t start_time_;
};

这里的QuickTest继承自testing::Test,并重写SetUp和TearDown方法,SetUp方法在每个TEST_F开始运行一次,退出执行TearDown方法一次。
这个案例里记录整个TEST_F测试夹具的测试用例的运行时间

class IntegerFunctionTest : public QuickTest {// We don't need any more logic than already in the QuickTest fixture.// Therefore the body is empty.
};// Now we can write tests in the IntegerFunctionTest test case.// Tests Factorial()
TEST_F(IntegerFunctionTest, Factorial) {// Tests factorial of negative numbers.EXPECT_EQ(1, Factorial(-5));EXPECT_EQ(1, Factorial(-1));EXPECT_GT(Factorial(-10), 0);// Tests factorial of 0.EXPECT_EQ(1, Factorial(0));// Tests factorial of positive numbers.EXPECT_EQ(1, Factorial(1));EXPECT_EQ(2, Factorial(2));EXPECT_EQ(6, Factorial(3));EXPECT_EQ(40320, Factorial(8));
}

这里IntegerFunctionTest 继承自QuickTest ,内部无其他实现,测试夹具IntegerFunctionTest整个运行时间

class QueueTest : public QuickTest {protected:void SetUp() override {// First, we need to set up the super fixture (QuickTest).QuickTest::SetUp();// Second, some additional setup for this fixture.q1_.Enqueue(1);q2_.Enqueue(2);q2_.Enqueue(3);}// By default, TearDown() inherits the behavior of// QuickTest::TearDown().  As we have no additional cleaning work// for QueueTest, we omit it here.//// virtual void TearDown() {//   QuickTest::TearDown();// }Queue<int> q0_;Queue<int> q1_;Queue<int> q2_;
};// Now, let's write tests using the QueueTest fixture.// Tests the default constructor.
TEST_F(QueueTest, DefaultConstructor) {EXPECT_EQ(0u, q0_.Size());
}// Tests Dequeue().
TEST_F(QueueTest, Dequeue) {int* n = q0_.Dequeue();EXPECT_TRUE(n == nullptr);n = q1_.Dequeue();EXPECT_TRUE(n != nullptr);EXPECT_EQ(1, *n);EXPECT_EQ(0u, q1_.Size());delete n;n = q2_.Dequeue();EXPECT_TRUE(n != nullptr);EXPECT_EQ(2, *n);EXPECT_EQ(1u, q2_.Size());delete n;
}

QueueTest类继承自QuickTest,并重写SetUp方法,在SetUp方法里调用QuickTest的父类方法,然后对Queue队列做初始化,

TEST_F(QueueTest, DefaultConstructor) {EXPECT_EQ(0u, q0_.Size());
}

这里判断q0队列大小是否为0u

TEST_F(QueueTest, Dequeue) {int* n = q0_.Dequeue();EXPECT_TRUE(n == nullptr);n = q1_.Dequeue();   //先出列判断是否为nullptr,在判断数据是否为1,最后判断队列大小是否为0,最后delete删除nEXPECT_TRUE(n != nullptr);EXPECT_EQ(1, *n);EXPECT_EQ(0u, q1_.Size());delete n;n = q2_.Dequeue();EXPECT_TRUE(n != nullptr);EXPECT_EQ(2, *n);EXPECT_EQ(1u, q2_.Size());delete n;
}

q0_.Dequeue队列本来大小为0,出列的数据为nullptr

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

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

相关文章

LIO-SAM算法解析

文章目录 简介算法概述1.点云去畸变1.1 主要功能1.2 主要流程 2.特征提取3.IMU预积分4.地图优化5.算法评估 简介 LIO-SAM在lego-loam的基础上新增了对IMU和GPS的紧耦合&#xff0c;采用一个因子图对位姿进行优化&#xff0c;包括IMU因子&#xff0c;激光里程计因子&#xff0c…

打破尺寸记录!荷兰QuTech研发16量子点阵列新技术

承载16个量子点交叉条阵列的量子芯片&#xff0c;可无缝集成到棋盘图案&#xff08;图片来源&#xff1a;网络&#xff09; 由荷兰代尔夫特理工大学(TU Delft)和荷兰应用科学研究组织(TNO)组建的荷兰量子计算研究中心QuTech的研究人员开发了一种用相对较少的控制线来控制大量量…

css正确的语法

Cascading Style Sheets (CSS) 是一种用于定义网页元素外观和样式的标记语言。以下是正确的 CSS 语法要点&#xff1a; 选择器 (Selector): 选择器用于指定要应用样式的 HTML 元素。例如&#xff0c;选择器可以是标签名、类名、ID、属性等。例如&#xff1a; 标签名选择器&…

Git(四)底层命令:git对象、树对象、提交对象

目录 一、知识回顾1.1 Linux 基础命令1.2 .git 文件夹解析 二、git 对象&#xff08;数据对象&#xff09;2.1 hash-object 存储对象2.2 cat-file 查看对象 三、树对象3.1 ls-files 查看暂存区3.2 update-index 创建暂存区3.3 write-tree 生成树对象3.4 更新暂存区&#xff0c;…

RocketMQ学习笔记(一)

RocketMQ学习笔记 消息中间件应用场景 应用解耦削峰填谷数据分发 常见的消息中间件 ActiveMQ&#xff1a;Apache出品&#xff0c;比较老的一个开源的消息中间件&#xff0c;以前在中小企业应用广泛Kafka&#xff1a;Apache软件基金会开发的一个开源流处理平台&#xff0c;由…

基于Java的电影院订票管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09; 代码参考数据库参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

mysql查看插入记录与查看mysql实时查询和插入速度

我真正关心的数据 比如一秒钟到底能插入多少行数据?慢查询有多少? 慢是一个相对概念,慢的绝对值时间是可以设置的,例如我设置long_query_time为10秒,那么但凡超过10秒的查询都可以认为是慢查询查询操作的超时时间mysql中系统变量什么意思?怎么查看系统变量? show varia…

如何在linux服务器上安装Anaconda与pytorch,以及pytorch卸载

如何在linux服务器上安装Anaconda与pytorch&#xff0c;以及pytorch卸载 1&#xff0c;安装anaconda1.1 下载anaconda安装包1.2 安装anaconda1.3 设计环境变量1.4 安装完成验证 2 Anaconda安装pytorch2.1 创建虚拟环境2.2 查看现存环境2.3 激活环境2.4 选择合适的pytorch版本下…

外网访问|SD-WAN跨境网络专线助力企业摆脱网络困境

在如今国际市场的大趋势下&#xff0c;跨境访问和沟通对于外贸企业来说至关重要&#xff0c;国际市场的竞争越来越激烈&#xff0c;外贸企业需要与全球各地的合作伙伴、客户和供应商保持紧密的跨境访问和沟通。而在解决跨境网络困境方面&#xff0c;MPLS、VPN和SD-WAN是常见的选…

第二证券:基本面改善预期强化 机构聚焦科技成长

沪指日前迎来“三连涨”。10月26日&#xff0c;上证指数、深证成指和创业板指全部收红&#xff0c;分别收涨0.48%、0.40%、0.65%。此前的两个交易日&#xff0c;上证指数、深证成指也均收涨&#xff0c;创业板指24日涨幅也达到了0.85%。 从近期密布发布的策略报告来看&#xf…

前端 读取/导入 Excel文档

情况&#xff1a; 需要通过Excel表&#xff0c;将数据导入到数据库&#xff0c;但是后台人员出差了&#xff0c;我又只会PHP&#xff0c;没用过node&#xff0c;所以只能前端导入Excel文件&#xff0c;然后循环调用后台的单条添加接口了。 库&#xff1a; Excel.js&#xff08…

Spring源码-4.Aware接口、初始化和销毁执行顺序、Scope域

Aware接口 其实在生命周期中&#xff0c;Aware接口也参与进来了&#xff0c;如图所示&#xff1a; 如初始化时的第三步&#xff0c;其实就是调用了Aware相关接口。 以常见的Aware接口举例&#xff1a; 1.BeanNameAware 主要是注入Bean的名字 2.BeanFactoryAware 主要是时注…

拒绝拖延,从我做起!

拒绝拖延&#xff0c;从我做起&#xff01; 如果有一件事&#xff0c;对你的未来很重要&#xff0c;千万不要说等以后再做&#xff0c;这是无限拖延的借口【等有时间再做】的真正含义是&#xff0c;闲得无聊再去做&#xff0c;意味着事情即不重要也不紧急该做的重要事情不做&a…

汽车托运是怎样收费

汽车托运是如何收费的呢?一般来说&#xff0c;汽车托运的费用是会随着每公里来增加&#xff0c;目前的托运的每公里费用在1.2-1.8元之间&#xff0c;托运的距离越远那么它的托运单价费用就会越低&#xff0c;如果你运气好找到一家在搞活动的汽车托运公司&#xff0c;那么你就算…

移动端ViT新利器!苹果提出稀疏专家混合模型Mobile V-MoEs

文章链接&#xff1a;https://arxiv.org/abs/2309.04354 最近&#xff0c;专家混合模型MoE受到了学术界和工业界的广泛关注&#xff0c;其能够对任意输入来激活模型参数中的一小部分来将模型大小与推理效率分离&#xff0c;从而实现模型的轻量化设计。目前MoE已经在自然语言处理…

Talk | 纽约州立宾汉姆顿大学博士生丁琰:开放环境中机器人的任务与动作规划

本期为TechBeat人工智能社区第541期线上Talk。 北京时间10月26日&#xff08;周四&#xff09;20:00&#xff0c;纽约州立宾汉姆顿大学博士生—丁琰的Talk已准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “开放环境中机器人的任务与动作规划”&#xff0…

财务数字化转型是什么?_光点科技

财务数字化转型是当今企业发展中的一项关键策略&#xff0c;旨在借助先进的数字技术&#xff0c;重新塑造和优化财务管理体系&#xff0c;以适应迅速变化的商业环境。这一转型不仅仅是技术的升级&#xff0c;更是对企业财务理念和流程的全面升级和改革。 财务数字化转型的核心在…

一致性hash算法

3,分片算法 为了把分散的片区能够整合到不同的区域,就需要用到分片算法: 常见的分片算法: 1,范围分片 2,哈希分片 3,热点分片 分片数据的分类: 1,带有用户性质的数据,这一部分数据往往是比较庞大的,比如用户的交易记录; 2,不带用户性质的数据,这部分数据不会太多.他和用…

Docker系列---【mysql容器手动停止后,重启服务器,mysql容器被删掉了,如何恢复mysql数据?】...

mysql容器手动停止后&#xff0c;重启服务器&#xff0c;mysql容器被删掉了&#xff0c;如何恢复mysql数据&#xff1f; 1.问题描述 为了快速搭建数据库&#xff0c;我使用了docker搭建数据库&#xff0c;由于服务器资源紧张&#xff0c;我想先把mysql容器停掉&#xff0c;启动…

vue ant DatePicker 日期选择器 限制日期可控范围

场景 限制当前日期之前不能选择 限制只能选择日期区间内 Ant Design Vue 效果 <a-date-picker :disabledDate"disabledDate"></a-date-picker>method // 限制日期选择disabledDate(current) {return current && current > moment().endOf(&…