CppUnit源代码分析总结

Created Saturday 05 March 2011

最近阅读了晨光(Morning)写的CppUnit源代码解读文档,文档写的非常不错。下面是自己学习的一些总结。

CppUnit 中主要的类

TestCase

TestCase 代表一个测试用例,TestSuit 包含一组测试用例,这两个类使用了Composite Pattern。

TestFixture定义了运行测试用例的准备(setup)、清理(tearDown)操作接口。TestCase 执行时,依次调用setup, run, tearDown,这些函数需要在派生类中提供具体实现。这里用到了 Template Method Pattern。TestCase类并不直接使用,定义测试用例时用TestCaller 。

在类的设计中,没有将TestFixture和Test的功能定义在一个类中,体现了“接口隔离”原则。

TestDecorator使用了Decorator Pattern。这个类中需要重新定义基类中的接口,去除接口的virtual属性。

TestCaller的功能不太容易理解。它建立了TestFixture类和Test Method之间的绑定关系。定义测试用例的过程如下:
1) 从TestFixture派生出测试类;
2) 在测试类中定义Test Method;
3) 在TestCaller 对象中,将测试类和Test Method绑定;
4) 将TestCaller对象添加到TestSuit 对象中;

TestResult

SynchronizedObject:提供了互斥机制,需要使用互斥机制的类从这个类派生。
在这个类中,包含ExclusiveZone、SynchronizationObject两个内部类。SynchronizationObject提供了lock、unlock操作接口,使用者需要提供和具体平台相关的实现。在需要进入互斥区域的时候,定义ExclusiveZone 对象,该对象的构造函数、析构函数中将会调用SynchronizationObject的lock、unlock。

Observer Pattern:TestResult和TestListener的角色分别是Subject和Observer。可以有多个对象对测试结果做出响应。

TextTestResultListener: 保存测试结果状态。

TestResultCollector:收集Failures。

TestFactory

TestFacotryEntry负责管理TestFacotry对象,使用map保存name和TestFactory的映射关系。

NameEntries负责管理TestFactoryEntry对象,使用map保存name和TestFactoryEntry的映射关系。这个类只能有一个对象实例,为此,使用Singleton Pattern。

转载于:https://www.cnblogs.com/weichsel/archive/2011/03/05/1971856.html

CppUnit源代码分析总结相关推荐

  1. Android系统默认Home应用程序(Launcher)的启动过程源代码分析

    在前面一篇文章中,我们分析了Android系统在启动时安装应用程序的过程,这些应用程序安装好之后,还需要有一个Home应用程序来负责把它们在桌面上展示出来,在Android系统中,这个默认的Home应 ...

  2. 《LINUX3.0内核源代码分析》第一章:内存寻址

    https://blog.csdn.net/ekenlinbing/article/details/7613334 摘要:本章主要介绍了LINUX3.0内存寻址方面的内容,重点对follow_page ...

  3. Scrapy源代码分析-经常使用的爬虫类-CrawlSpider(三)

    CrawlSpider classscrapy.contrib.spiders.CrawlSpider 爬取一般站点经常使用的spider.其定义了一些规则(rule)来提供跟进link的方便的机制. ...

  4. Android 中View的绘制机制源代码分析 三

    到眼下为止,measure过程已经解说完了,今天開始我们就来学习layout过程.只是在学习layout过程之前.大家有没有发现我换了编辑器,哈哈.最终下定决心从Html编辑器切换为markdown编 ...

  5. Android应用程序进程启动过程的源代码分析(1)

    Android应用程序框架层创建的应用程序进程具有两个特点,一是进程的入口函数是ActivityThread.main,二是进程天然支持Binder进程间通信机制:这两个特点都是在进程的初始化过程中实 ...

  6. AFNetworking 源代码分析

    关于其他 AFNetworking 源代码分析的其他文章: AFNetworking 概述(一) AFNetworking 的核心 AFURLSessionManager(二) 处理请求和响应 AFU ...

  7. Hadoop源代码分析 - MapReduce(转载)

    1. Hadoop源代码分析(MapReduce概论) http://caibinbupt.javaeye.com/blog/336467

  8. RTMPdump(libRTMP) 源代码分析 3: AMF编码

    2019独角兽企业重金招聘Python工程师标准>>> 注:此前写了一些列的分析RTMPdump(libRTMP)源代码的文章,在此列一个列表: RTMPdump 源代码分析 1: ...

  9. Android系统默认Home应用程序(Launcher)的启动过程源代码分析(3)

    Step 13.  ActivityStack.startActivityLocked 这个函数定义在frameworks/base/services/java/com/android/server/ ...

最新文章

  1. nethogs监控linux流量
  2. Linux学习8之Shell编程--基础正则表达式
  3. iphone屏幕镜像连电视_手机股票行情:在电视上投射或镜像安卓手机屏幕的三个简单步骤...
  4. [导入]blog年终小结
  5. 数据结构折半查找例题_数据结构第9章例题与答案
  6. Spark源码分析之DAGScheduler以及stage的划分
  7. Java多线程学习十二: synchronized的工作原理 以及背后的“monitor 锁”
  8. 裁员、卖手机、押注VR,HTC能否王者归来?
  9. 详细讲解3DMAX导出插件-tiamo
  10. 开发extjs常用的插件
  11. ACM 学习笔记(六) 图论
  12. 离散数学第六版第er章偶数题答案_离散数学答案--第二章习题解答.doc
  13. 亲身体验 DDOS(拒绝服务)攻击硬防DIY
  14. dpdk-pktgen快速发包工具踩坑日记
  15. 人工神经网络(六)线性回归与分类, 解决与区别
  16. 用latex写英文论文
  17. 一步步教你搭建自己的云服务器,(鉴于网上一大堆文章,看这一篇就够了)
  18. 四级词汇pdf_这或许是史上最全“雅思阅读高频词汇”,赶快拿走吧~~
  19. SU Podium 渲染插件学用笔记
  20. 互联网金融概念股龙头有哪些

热门文章

  1. 大数据之-Hadoop之HDFS_HDFS存储块的大小设置_设置成多少合理_为什么不能设置太小也不能设置太大---大数据之hadoop工作笔记0051
  2. ...is public, should be declared in a file named “ScresourcesApplic.java“---springcloud工作笔记164
  3. MyCat分布式数据库集群架构工作笔记0009---Mycat主--从复制配置上
  4. Netty工作笔记0030---NIO与零拷贝原理剖析
  5. JAVA零碎要点015---java BigDecimal常见操作_加减乘除操作_比较_取几位小数四舍五入_随时更新
  6. Linux学习笔记011---编译命令make的认识及使用
  7. anaconda windows theano keras 完全安装教程,没有gpu忽略那段话也成功了
  8. Linux有问必答:如何在树莓派上安装USB网络摄像头
  9. C语言和设计模式(解释器模式)
  10. C语言和设计模式(迭代器模式)