跬步致远——Ai92

物换心不移,一生微笑同看雨过天晴。

用户操作
[即时聊天] [发私信] [加为好友]
苑永凯ID:ai92
181791次访问,排名412好友0人,关注者1
ai92的文章
原创 73 篇
翻译 1 篇
转载 2 篇
评论 262 篇
Ai92的公告
虚心、慎独
宽厚、吃亏
寡言、不嗔
不说人过
不文己过
不覆己过
闻谤不辨
最近评论
wow gold:wow gold
cheap wow gold
buy wow gold<……
GDGD:warhammer gold
warhammer online gold
[url=http://www.thepowerlevel.com/Gold.php?N=Warhammer]warhammer gold[/url]
[url=http://www.thepowerlevel.com/Gold.php?N=Warhammer]warhammer online gold[/url]
[url=http://www.thepowerleve……
michael:朋友,我是一位刚接触模式的新手,但我对java设计模式十分感兴趣,还希望兄台,指点一二呀! 是否可以给我你的QQ,邮箱;
hu200298:看不到图片
文章分类
收藏
    相册
    留念济南
    点击排行榜
    1-杀毒手记:遭遇Infostealer
    2-JUnit入门
    3-设计已死?
    4-深入浅出工厂模式
    5-UML类图介绍
    6-JUnit测试建议
    7-Use Case编写建议
    8-JUnit源码分析(一)
    朋友的博客
    a lonely bug's words(RSS)
    CharlesYY的专栏(RSS)
    chinakite的blog(RSS)
    liuxb的blog(RSS)
    shuyaji的专栏(RSS)
    梦想风暴(RSS)
    笑看人生的专栏(RSS)
    雪之舞的专栏(RSS)
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 JUnit源码分析(二)收藏

    新一篇: JUnit源码分析(三) | 旧一篇: JUnit源码分析(一)

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

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

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

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

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

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

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

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

    发表于 @ 2005年03月13日 20:26:00|评论(loading...)|编辑

    新一篇: JUnit源码分析(三) | 旧一篇: JUnit源码分析(一)

    评论:没有评论。

    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © Ai92