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

原创|其它|编辑:郝浩|2009-06-18 10:39:01.000|阅读 668 次

概述:对于单元测试工具的选型,个人认为需要关注三点:简单 ----对于使用者来说这点很重要,对外功能简单,体现为够用就好,而不是全集。简洁 ----我们不希望写除了测试意外的废代码,包括用例的注册。高效 ----对于程序员来说,最不能容忍的就是效率问题

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

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

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并不依赖外部任何的库,这里定义了输出流的基类


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:博客园

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP