googletest基本测试宏
还不知道googletest基本使用方法的请参看前一篇blog 使用googletest进行C++单元测试
本篇仍然使用testStack测试文件进行测试,测试代码如下
#include <gtest/gtest.h>
#include "MyStack.h"
#include <iostream> TEST(StackTest, testPop) { //StackTest是testcase名,testPop为具体的test
MyStack st;
st.push();
EXPECT_EQ(, st.pop());
} TEST(StackTest, testAll) { //同一个testcase可以建多个test,不同test之间相互独立
MyStack st;
st.push();
st.push();
int val = st.pop(); // 非致命断言,一个失败仍然会继续后续的
EXPECT_EQ(, val); // 预期val等于28
EXPECT_NE(, val); // 预期val不等于28,fail
EXPECT_GT(, val); // 大于,LE小于等于
EXPECT_TRUE(val==) << "val somehow is not equal to 28"; // 如果失败,可以打印自定义消息 // 字符串检查
EXPECT_STREQ("9 ", st.toString().c_str()); //C风格字符串的比较
EXPECT_STRCASEEQ("9 ", st.toString().c_str()); // 忽略大小写 EXPECT_FLOAT_EQ(7.0, ((float) val)/);
// 两个浮点数几乎相等:相差在4个ULP之内
// ULP: Unit in the Last Place -- 浮点数变量之间的最小间隔
// 例如: 如果,float X; Y = 是大于X的最小浮点数
// 那么,ULP = Y - X;
EXPECT_DOUBLE_EQ(7.0, ((double) val)/); //double类型
EXPECT_NEAR(6.0, ((float) val)/, ); // 差值小于1 // EXPECT_THROW(st.pop(), std::out_of_range); // 预期st.pop()会抛出一个out_of_range异常
// EXPECT_NO_THROW(st.pop()); // 预期st.pop()会抛一个异常
// EXPECT_NO_THROW(st.pop()); // 预期st.pop()不会抛异常 // 致命断言,如果一个失败,后续的不会再测试
ASSERT_EQ(, val);
ASSERT_GT(, val);
ASSERT_TRUE(val==);
ASSERT_STREQ("", st.toString().c_str()); //fail
ASSERT_STRCASEEQ("9 ", st.toString().c_str()); // 忽略大小写
}
测试后结果如下
当非致命的断言 EXPECT_NE(28, val)失败时,测试并没有终止。
当碰到致命断言ASSERT_STREQ("9", st.toString().c_str())失败时 ,测试终止。

googletest基本测试宏的更多相关文章
- GoogleTest死亡测试的跨平台BUG
最近工作用到了GoogleTest来作单元测试,但是死亡测试的ASSERT_DEATH语句一直跑不通. GoogleTest会启动子进程来运行代码,并捕捉子进程的错误消息,这就是所谓的"死亡 ...
- IPv6地址测试宏
- GoogleTest环境配置以及应用
1 GoogleTest源码编译: GoogleTest代码仓库URL: https://github.com/google/googletest.git 下载源代码: git clone --bra ...
- Linux文件管理
虚拟文件系统(VFS)概述: VFS位于文件系统.和访问文件的系统调用(API)之间,为系统调用访问文件系统提供统一的抽象接口. 不同文件系统连接成一个单一树形结构,分别挂载(自己挂载需要用mount ...
- Linux进程学习
进程与进程管理: 清屏:system("clear"); //#include <signal.h> 进程环境与进程属性: 什么是进程:简单的说,进程就是程序的一次执行 ...
- GTest Google的一种白盒单元测试框架 开源项目
GTest为google开源的白盒单元测试跨平台测试框架,含丰富的断言.类型参数化测试.死亡测试.以及其他的测试选项设置.文件保存等,以下将对该项目C++的实现进行简要的分析,作为学习记录备份. 基本 ...
- Linux文件和目录
access() //检查是否调用进程有Access这个文件的权限,如果文件是一个符号链接,会将它解引用,成功返回0,失败返回-1设errno #include <unistd.h> in ...
- splice()函数,'SPLICE_F_MOVE' 'SPLICE_F_NONBLOCK' 'SPLICE_F_MORE' undeclared
1.编译含有splice()函数的程序时出现,'SPLICE_F_MOVE' undeclared,'SPLICE_F_NONBLOCK' ‘SPLICE_F_MORE' 也是一样undeclare ...
- iOS: 实现微信支付
一.介绍: 现在的消费越来越方便,直接带个手机用各种三方的支付平台进行支付就行,例如微信.支付宝.现在正好我所做的项目中用到了微信支付,今天就来整理一下. 二.准备: 1.去微信官方开发者平台注册开发 ...
随机推荐
- selenium 定位无标签的元素
转载需注明出处. 如: ::before 伪元素xpath css_selector. id. class_name各种定位失效,可以选择用, .get_attribute('innerHTML')方 ...
- selenium和PhantomJS的使用
利用selenium来进行爬取数据 import time from selenium import webdriver # 创建phantomjs浏览器对象 driver = webdriver.P ...
- Is this Sentence Difficult? Do you Agree? -paper
术语: 数据lemma:词根,词元(词的基本形式,如名词单数或动词的不定式形式) content words:实词part-of-speech:词性object-relative clauses an ...
- PHP5和PHP7的安装、PHP和apache的整合!
1.PHP5的安装: 下载: wget -c http://cn2.php.net/distributions/php-5.6.36.tar.gz (php5) wget -c http://cn2 ...
- 学习笔记TF014:卷积层、激活函数、池化层、归一化层、高级层
CNN神经网络架构至少包含一个卷积层 (tf.nn.conv2d).单层CNN检测边缘.图像识别分类,使用不同层类型支持卷积层,减少过拟合,加速训练过程,降低内存占用率. TensorFlow加速所有 ...
- Eclipse maven 错误修正方法:An error occurred while filtering resources
最近打开Eclipse后发现项目报红叉,解决办法如下: 1.eclipse中删除该项目(注意:不要删除代码) 2.cmd,进入到项目目录下,执行命令:mvn eclipse:clean 3.重新导入项 ...
- mariadb增量备份
何为增量备份,简单理解就是使用日志记录每天数据库的操作情况,只需要每天把这个日志里的数据库操作还原到数据库中,从而避免每天都进行完全备份,这种情况下,每周进行一次完全备份即可 首先我们需要配置以下ma ...
- sqler sql 转rest api redis 接口使用
sqler 支持redis 协议,我们可以用过redis client 连接sqler,他会将宏住转换为redis command 实现上看源码我们发现是基于一个开源的redis 协议的golang ...
- jupyter命令把.ipynb文件转化为.py文件
jupyter nbconvert --to script *.ipynb 就能把当前文件夹下面的所有的.ipynb文件转化为.py文件
- 13机器学习实战之PCA(1)
降维技术 对数据进行降维有如下一系列的原因: 使得数据集更容易使用 降低很多算法的计算开销 去除噪音 使得结果易懂 在以下3种降维技术中, PCA的应用目前最为广泛,因此本章主要关注PCA. 主成分分 ...