Google C++ Testing Framework之断言
本节将会深入一步,了解 gTest 的断言机制。
开始。
1. 我们先从测试代码第一行开始:
TEST(IsPrimeTest, TrueCondition)
宏:
TEST 是一个宏,有两个参数,googtest对其解释为:test_case_name , test_name 。
EXPECT_TRUE,见字知义,用来比较所传递的参数是否返回 true 。类似的有EXPECT_FALSE。
另:googletest还包装了另一个宏 ASSERT_*, 与EXPECT_* 的区别是:
ASSERT_*版本的断言失败时会产生致命失败,并结束当前函数,后面的语句将不会执行。
EXPECT_*版本的断言产生非致命失败,不会中止当前函数,也就是说,案例继续往下执行。
2. 常用断言如下:
<1>. 基本的true/false条件测试:
Fatal assertion | Nonfatal assertion | Verifies |
ASSERT_TRUE(condition); | EXPECT_TRUE(condition); | condition is true |
ASSERT_FALSE(condition); | EXPECT_FALSE(condition); | condition is false |
<2>. 数值比较 测试:
Fatal assertion | Nonfatal assertion | Verifies |
ASSERT_EQ(expected, actual); | EXPECT_EQ(expected, actual); | expected == actual |
ASSERT_NE(val1, val2); | EXPECT_NE(val1, val2); | val1 != val2 |
ASSERT_LT(val1, val2); | EXPECT_LT(val1, val2); | val1 < val2 |
ASSERT_LE(val1, val2); | EXPECT_LE(val1, val2); | val1 <= val2 |
ASSERT_GT(val1, val2); | EXPECT_GT(val1, val2); | val1 > val2 |
ASSERT_GE(val1, val2); | EXPECT_GE(val1, val2); | val1 >= val2 |
<3>. 比较两个C字符串(即char*或wchar_t*)测试:
(如果需要比较两个字符串对象,则相应地使用EXPECT_EQ等等)
Fatal assertion | Nonfatal assertion | Verifies |
ASSERT_STREQ(expected_str, actual_str); | EXPECT_STREQ(expected_str, actual_str); | the two C strings have the same content |
ASSERT_STRNE(str1, str2); | EXPECT_STRNE(str1, str2); | the two C strings have different content |
ASSERT_STRCASEEQ(expected_str, actual_str); | EXPECT_STRCASEEQ(expected_str, actual_str); | the two C strings have the same content, ignoring case |
ASSERT_STRCASENE(str1, str2); | EXPECT_STRCASENE(str1, str2); | the two C strings have different content, ignoring case |
<4>. 显示成功或失败(AdvanceGuide):
SUCCEED(); |
FAIL(); | ADD_FAILURE(); | ADD_FAILURE_AT("file_path", line_number); |
<5>. 异常检查(AdvanceGuide):
Fatal assertion | Nonfatal assertion | Verifies |
ASSERT_THROW(statement, exception_type); | EXPECT_THROW(statement, exception_type); | statement throws an exception of the given type |
ASSERT_ANY_THROW(statement); | EXPECT_ANY_THROW(statement); | statement throws an exception of any type |
ASSERT_NO_THROW(statement); | EXPECT_NO_THROW(statement); | statement doesn't throw any exception |
<6>. 使用已有的布尔型函数:
Fatal assertion | Nonfatal assertion | Verifies |
ASSERT_PRED1(pred1, val1); | EXPECT_PRED1(pred1, val1); | pred1(val1) returns true |
ASSERT_PRED2(pred2, val1, val2); | EXPECT_PRED2(pred2, val1, val2); | pred2(val1, val2) returns true |
... | ... | ... |
<7>. 还可自定义输出格式:
Fatal assertion | Nonfatal assertion | Verifies |
ASSERT_PRED_FORMAT1(pred_format1, val1); | EXPECT_PRED_FORMAT1(pred_format1, val1`); | pred_format1(val1) is successful |
ASSERT_PRED_FORMAT2(pred_format2, val1, val2); | EXPECT_PRED_FORMAT2(pred_format2, val1, val2); | pred_format2(val1, val2) is successful |
... | ... | ... |
<8>. 浮点型检查:
Fatal assertion | Nonfatal assertion | Verifies |
ASSERT_FLOAT_EQ(expected, actual); | EXPECT_FLOAT_EQ(expected, actual); | the two float values are almost equal |
ASSERT_DOUBLE_EQ(expected, actual); | EXPECT_DOUBLE_EQ(expected, actual); | the two double values are almost equal |
两个相近数比较。
Fatal assertion | Nonfatal assertion | Verifies |
ASSERT_NEAR(val1, val2, abs_error); | EXPECT_NEAR(val1, val2, abs_error); |
the difference between val1 and val2 doesn't exceed the given absolute error |
<9>. Windows HRESULT assertions
Fatal assertion | Nonfatal assertion | Verifies |
ASSERT_HRESULT_SUCCEEDED(expression); | EXPECT_HRESULT_SUCCEEDED(expression); | expression is a success HRESULT |
ASSERT_HRESULT_FAILED(expression); | EXPECT_HRESULT_FAILED(expression); | expression is a failure HRESULT |
总结:
通过以上常用断言总结,我们可以看到,gTest提供了非常丰富的断言来帮助我们更好地执行测试,编写更高效的自动化测试代码。
转载于:https://www.cnblogs.com/way_testlife/archive/2010/10/18/1854908.html
Google C++ Testing Framework之断言相关推荐
- [gtest][001] A quick introduction to the Google C++ Testing Framework
前言:这是一篇非常好的介绍谷歌测试框架基本知识的文章.我们知道谷歌在提供开源的模块的时候,往往都附带提供了相应的测试案例.例如浏览器的移植工作,理解这些测试案例,比如unit test案例是很重要的事 ...
- Google Mock启蒙篇 [2] (Google C++ Mocking Framework for Dummies 翻译)
Setting Expectations 成功地使用Mock对象的关键是在它上面设置合适的期望.如果你设置的期望太过严格,你的测试可能会因为无关的改变而失败.如果你把期望设置的太过松驰,bugs可能会 ...
- Google Mock启蒙篇 [1] (Google C++ Mocking Framework for Dummies 翻译)
Google C++ Mocking Framework for Dummies Google Mock启蒙篇 Version: 0.07< xmlnamespace prefix =" ...
- What Is Google C++ Mocking Framework?
(Note: If you get compiler errors that you don't understand, be sure to consult Google Mock Doctor.) ...
- C++ Testing Framework
C++ Testing Framework C++ Testing Framework测试框架使用 链接:https://www.ibm.com/developerworks/cn/aix/libra ...
- [gtest][002] A quick start to build the Google C++ Testing project
前言:上一篇谷歌的测试的框架,大致介绍了测试的框架的基本情况.这一节,讲述如何构建一个真正的自动化测试项目: 注意,文章最后一部分有一个视频,这个视频是一步一步构建谷歌测试案例,值得仔细研究. Uni ...
- 4.6、robot framework所有断言操作
1.Should (Not) Be Empty:断言是否为空 2.Should (Not) Be Equal:断言是否相等[断言成功则通过,失败则fail.可以通过msg自定义提示信息] 3.Shou ...
- websecurity - Web Security Testing Framework 超级牛B扫描器
Windows – Websecurify 0.3.exe http://websecurify.googlecode.com/files/Websecurify%200.3.exe Linux – ...
- testing framework
actor python actor.py --ip 192.168.4.6 --num_replicas 12 learner python learner python learner --poo ...
最新文章
- 查询liunx上磁盘占用情况
- 自定义状态栏notification布局
- HttpClientFactory的套路,你知多少?
- 计算机基础知识菜鸟教程,机器学习基础知识整理归纳
- POJ 1222 1681 1830 3185 开关灯问题 (高斯消元 异或方程组)
- Spring Boot 2.2版本变化[翻译]
- Duplicate interface definition for class
- Spring Boot中使用@Scheduled创建定时任务
- 虚拟机可以识别usb无线网卡,但一直提示设备正在运行中--解决方法
- CoinDesk将发布2018年比特币和区块链行业报告
- 程序员想创业首先要突破自己三关(转)
- 小程序商店刷榜_微信小程序店铺如何做引流,带来转化?
- 关于U盘被写保护无法格式化的解决方法
- Markdown中设置图片尺寸及添加图注
- mapbox创建空白底图
- Basic认证方式的配置
- Transformer + RL:是强化学习魔高一尺,还是 Transformer 道高一丈? (1)
- (co-,contra-,in-)variance in Scala, what is [+-A]
- metasploit简单使用:复现永恒之蓝
- Android之查看Wifi密码
热门文章
- Docker 安装Centos,Tomcat,Jdk等相关的自定义(Dockerfile)镜像
- 多版本号并发控制(MVCC)在实际项目中的应用
- 【翻译】如何在Ext JS 6中使用Fashion美化应用程序
- clone方法是如何工作的
- QOS之NBAR 下
- 轻松提取und文件加密内容,破解X-文件锁
- 新奇漂亮的Ajax/CSS表格设计汇集
- 问题 F: 编写函数:一维数组的逆序 (Append Code)
- db2 linux 导入数据_实现DB2数据库迁移之导入步骤在Linux下
- 波卡生态项目Polkalokr将在Polkastarter进行IDO