解读sample2
说明
| 被测试代码文件 | sample2.h、sample2.cc |
| 测试代码文件 | sample2_unittest.cc |
官网上如是描述sample2:
Sample #2 shows a more complex unit test for a class with multiple member functions.
sample1演示了如何使用gtest来对一个类以及它的成员函数进行单元测试。
为了让sample2的代码能尽快地跑起来,我把sample2的代码文件直接添加到sample1使用的工程中进行编译。

理解被测试代码
被测试代码是一个字符串的封装类:class MyString
理解测试代码:组织关系
在sample1中,我们使用TEST宏来组织针对全局函数的单元测试代码。在sample2中,测试的对象由function变成了class,我们依然可以使用TEST宏来组织单元测试代码,详情如下:
| 被测试的类 | class MyString |
| test case name | MyString |
| - test name 1 | DefaultConstructor:测试默认构造函数 |
| - test name 2 | ConstructorFromCString:测试构造函数explicit MyString(const char* a_c_string) |
| - test name 3 | CopyConstructor:测试拷贝构造函数MyString(const MyString& string) |
| - test name 4 | Set:测试成员函数void Set(const char* c_string) |
我能够从sample1和sample2中感觉到gtest在易用性方面的努力,有可能这跟我使用过CppUnit有关。易用性的意思是,能够让人把更多的精力集中在测试这件事情上面,而不需要太多地关注框架本身的使用问题。
理解测试代码:检查字符串比较结果的断言
对class MyString进行单元测试的时候,sample2_unittest.cc中使用了一组检查字符串比较结果的断言:
| 致命断言(Fatal assertion) | 非致命断言(Nonfatal assertion) | 预期结果(Verifies) |
| ASSERT_STREQ(expected, actual); | EXPECT_STREQ(expected_str, actual_str); | 两个C字符串有相同的内容 |
| ASSERT_STRNE(expected, actual); | EXPECT_STRNE(str1, str2); | 两个C字符串有不同的内容 |
| ASSERT_STRCASEEQ(expected, actual); | EXPECT_STRCASEEQ(expected_str, actual_str); | 忽略大小写,两个C字符串有相同的内容 |
| ASSERT_STRCASENE(expected, actual); | EXPECT_STRCASENE(str1, str2); | 忽略大小写,两个C字符串有不同的内容 |
系列文章索引:http://www.cnblogs.com/duxiuxing/p/4270836.html
解读sample2的更多相关文章
- SDWebImage源码解读之SDWebImageDownloaderOperation
第七篇 前言 本篇文章主要讲解下载操作的相关知识,SDWebImageDownloaderOperation的主要任务是把一张图片从服务器下载到内存中.下载数据并不难,如何对下载这一系列的任务进行设计 ...
- SDWebImage源码解读 之 NSData+ImageContentType
第一篇 前言 从今天开始,我将开启一段源码解读的旅途了.在这里先暂时不透露具体解读的源码到底是哪些?因为也可能随着解读的进行会更改计划.但能够肯定的是,这一系列之中肯定会有Swift版本的代码. 说说 ...
- SDWebImage源码解读 之 UIImage+GIF
第二篇 前言 本篇是和GIF相关的一个UIImage的分类.主要提供了三个方法: + (UIImage *)sd_animatedGIFNamed:(NSString *)name ----- 根据名 ...
- SDWebImage源码解读 之 SDWebImageCompat
第三篇 前言 本篇主要解读SDWebImage的配置文件.正如compat的定义,该配置文件主要是兼容Apple的其他设备.也许我们真实的开发平台只有一个,但考虑各个平台的兼容性,对于框架有着很重要的 ...
- SDWebImage源码解读_之SDWebImageDecoder
第四篇 前言 首先,我们要弄明白一个问题? 为什么要对UIImage进行解码呢?难道不能直接使用吗? 其实不解码也是可以使用的,假如说我们通过imageNamed:来加载image,系统默认会在主线程 ...
- SDWebImage源码解读之SDWebImageCache(上)
第五篇 前言 本篇主要讲解图片缓存类的知识,虽然只涉及了图片方面的缓存的设计,但思想同样适用于别的方面的设计.在架构上来说,缓存算是存储设计的一部分.我们把各种不同的存储内容按照功能进行切割后,图片缓 ...
- SDWebImage源码解读之SDWebImageCache(下)
第六篇 前言 我们在SDWebImageCache(上)中了解了这个缓存类大概的功能是什么?那么接下来就要看看这些功能是如何实现的? 再次强调,不管是图片的缓存还是其他各种不同形式的缓存,在原理上都极 ...
- AFNetworking 3.0 源码解读 总结(干货)(下)
承接上一篇AFNetworking 3.0 源码解读 总结(干货)(上) 21.网络服务类型NSURLRequestNetworkServiceType 示例代码: typedef NS_ENUM(N ...
- AFNetworking 3.0 源码解读 总结(干货)(上)
养成记笔记的习惯,对于一个软件工程师来说,我觉得很重要.记得在知乎上看到过一个问题,说是人类最大的缺点是什么?我个人觉得记忆算是一个缺点.它就像时间一样,会自己消散. 前言 终于写完了 AFNetwo ...
随机推荐
- Android(java)学习笔记223:上下文的区分
1.两种上下文: (1)Activity.this 界面的上下文 (2)getApplicationContext() 整 ...
- webpack入门学习
一.认识webpack webpack是一款模块打包加载工具.它能够将各种资源.JS.CSS.图片等作为模块打包加载.本人也是近期因工作需要才开始接触webpack,在下文中有误的地方还希望各位能够指 ...
- Java中如何分析一个案列---猫狗案例为例
猫狗案例: 具体事务: 猫.狗 共性: 姓名.年龄.吃饭 分析:从具体到抽象 猫: 姓名.年龄--->成员变量 吃饭 ---> 成员方法 构造方法:无参.有参 狗: 姓名.年龄 ...
- POJ 1330 Nearest Common Ancestors(LCA模板)
给定一棵树求任意两个节点的公共祖先 tarjan离线求LCA思想是,先把所有的查询保存起来,然后dfs一遍树的时候在判断.如果当前节点是要求的两个节点当中的一个,那么再判断另外一个是否已经访问过,如果 ...
- 在ssh框架中注解方式需要注意的几个问题
1.注解方式的时候 Spring 2.5 引入了 @Autowired 注释,它可以对类成员变量.方法及构造函数进行标注,完成自动装配的工作. 通过 @Autowired的使用来消除 set ,get ...
- Android-SVN
服务器启动svn服务 svnserve -d -r /home/wbp/svn/actia/ 1 .svn 重新定位location , 改变新仓库的uuid , 今天操作SVN Client 发现 ...
- iOS真机测试种可能遇到的问题
1. Reason- image not found 用模拟器是没有问题的,不过在真机好像是有问题,不确定是否是所有机型. 崩溃日志 1 2 3 4 5 dyld: Library not l ...
- Asp.net 主题 【1】
页面中默认的显示样式太朴素,一页一页的设置控件的显示样式效率又太低,主题和皮肤则提供了一种高效的设计方案. 一.添加主题 二.添加皮肤文件(.skin): 在皮肤文件中添加如下代码 <asp ...
- 解决tomcat占用8080端口问题
在dos下,输入 netstat -ano|findstr 8080 //说明:查看占用8080端口的进程 显示占用端口的进程 askkill /pid 44464 /f //说明,运 ...
- CentOS6.5安装LAMP环境的前期准备
首先需要按照前一篇<CentOS 6.5下安装MySql 5.7>的安装步骤配置好防火墙.关闭 SELINUX 1.编译安装libxml2注:libxml2是一个xml的c语言版的解析器, ...