快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

JUnit源码分析(二)


    在上面我们已经提到了junit.extentions包中的内容TestSetup。来看看整个包的结构吧。











先简要的介绍下包中各个类的功能。ActiveTestSuite对TestSuite进行了改进,使得每个test运行在一个单独的线程里面,并且只到所有的线程都结束了才会结束整个测试。ExceptionTestCase是对TestCase进行的改进,可以方便的判定测试类是否抛出了期望的非常。而剩下的三个类,大概你看的出来是使用了装饰模式来设计的。其中TestDecorator为详细装饰类制定好了使用规则,RepeatedTest和TestSetup则是详细实现的装饰类。



那为什么extentions包中ActiveTestSuite和ExceptionTestCase没有使用装饰模式呢?原因在于装饰模式在结构上要求存在类似于组合模式的递归。而对于已有的TestCase和TestSuite来说,直接继续它们要比构建一个新的递归结构要来得快得多而且简朴;并且这些增强功能都只是针对TestCase或者TestSuite。使用了装饰模式来扩展的类与以上不同的是,它们功能的增强是针对任何Test实现的。假如不采用装饰模式同样的功能要为TestCase、TestSuite以及以后的其他Test实现分别写出子类。因此使用装饰模式能够很巧妙的解决这个问题。




 


下面来介绍下junit.runner包。上面已经提到,对于JUnit使用者来说,它可说是完全透明的,这个包里面提供了JUnit自己的测试类加载。下面就是包中所有类的关系图。









没有什么好讲的,都是使用反射机制来将测试类加载进来,还有读取properties文件的操作。假如想学习下反射机制的应用可以阅读这部分的源码。




 


剩下的三个包这里也不作介绍,大部分的内容都是GUI的绘制(当然junit.textui包除外)。




 


JUnit中还使用了观察者模式来完成单元测试结果的自动更新(具体内容请见我关于观察者模式的文章)。


       这样,对JUnit的整体框架有了全面的熟悉。总体来说各个包分工明确,设计上采用了必要的设计模式来增强了扩展性和重用性,很值得学习和借鉴。



返回类别: 教程
上一教程: Java与正则表达式(2年级2)
下一教程: 如何判定输入的文本是否日期格式

您可以阅读与"JUnit源码分析(二)"相关的教程:
· JUnit源码分析(三)
· Java源码分析:深入探讨Iterator模式
· WebWork2源码分析续三
· JUnir源码分析(一)
· WebWork2源码分析续一
    微笑服务 优质保证 索取样品