cxxtest单元测试框架源码分析(一):类的组成关系

 一:对于单元测试工具的选型,个人认为需要关注四点:

1、简单 ----对于使用者来说这点很重要,对外功能简单,体现为够用就好,而不是全集

2、简洁 ----我们不希望写除了测试意外的废代码,包括用例的注册

3、高效 ----对于程序员来说,最不能容忍的就是效率问题

基于以上因素,我们选择了CxxTest,为了更好的应用该工具,从今天开始逐步解析CxxTest的内幕。

二:CxxTest内部类的组成

首先我们看下CxxTest中各类的平面关系图 

 

从上图可以看出最主要包含了三大类:

A、CxxTest:Link相关类及其子类:包含CxxTest中使用到的描述信息:如:TestDescription、SuiteDescription、WorldDescription(详细继承关系如下)

 

B、CxxTest:Listener相关类及其子类 :主要实现测试过程中收到通知信息的处理(如根据测试结果输出到不同的界面以及文件等等)。

    它的子类又主要分成:文本输出(继承CxxTest:ErrorFormat)、图形化输出(继承CxxTest:GuiListener)、XML文件输出(集成CxxTest:XmlFormat)(详细继承关系如下)

 

C、CxxTest:ValueTraits模板类:主要用于实现断言TS_ASSERT_EQUALS,将任意的数据类型转换成字符串。

     说明:从下图可以看出,CxxTest只实现了基本数据类型比较断言,即如果要实现自定义类型的断言还需要实现CxxTest:ValueTraits模板类(具体怎么操作见后续文章)

 

其他类作用说明:

CxxTest::TestSuite:是所有测试用例的基类,所有测试用例都必须继承该类,测试用例都是void test*()类型的公有函数

CxxTest::TestRunner :用于运行所有的测试用例(使用方式为:创建一个实现了TestListener的子类对象,然后调用TestRunner::runAllTests( myListener )即可)

CxxTest::OutputStream:由于CxxTest并不依赖外部任何的库,这里定义了输出流的基类

版权说明

转载改文章请指明出处http://www.cnblogs.com/xiaocheng,多谢!

Author: Elvis.Chen 

 

posted @ 2009-06-16 19:31  Elvis.Chen  阅读(2113)  评论(0编辑  收藏  举报