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。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值