Junit3.8版本的源码

    JUnit就是对程序代码进行单元测试的一种Java框架。通过每次修改程序之后测试代码,程序员就可以保证代码的的少量变动不会破坏整个系统。官方对JUnit的定义是“JUnit is a simple framework to write repeatable tests.”。 我们可以联想到武学里面的金钟罩.

    Junit3.8源码,它主要是有四个设计模式:观察者模式、组合模式、模板模式、命令模式。
     先得到TestResult对象,然后,通过它的对象把TestListener的子类加到TestResult里去,这里是加入了监听器然后,将测试的结果集在eclipse中,如测试的结果是失败的,则以红条显示,成功以绿条显示出来,这里可以看出使用了观察者模式,观察者模式是对象之间已一对多的依赖关系,而TestResult是主题对象,多个观察者的对象去监听某一个主题对象,如果主题对象发生了变化,那么,就会去通知观察者,让它们自动更新自己。
   
     再通过Test来得到TestSuite对象,然后,构造方法传入class,判断这个class是不是Test的子类,在这里我们可以看出使用了组合模式,可以把TestSuite看成树枝,将TestCase看成树叶,它将松散的TestCase对象组织在TestSuite中,便于统一运行它们,在运行时,要运行到所有的TestCase中,因为真正运行的是在TestCase里,这就体现出“部分-整体”的层次结构,使测试集合相对降低了耦合度。

    然后,再通过TestCase类我们可以看出,使用了模板模式,在父类定义流程,子类具体实现,在TestCase里,在运行前调用setUp方法,在运行后如果要清除对象,调用tearDown方法,然后,开发人员在编写单元测试时,要继承TestCase,只需要在子类具体实现父类定义的流程即可。

    然而,TestSuite和TestCase同时实现Test接口时,使得调用操作信息与实际操作信息进行松耦合,TestSuite和TestCase是Test接口的两个实现子类,这样并不需要关心详细处理请求的操作信息,这就使用了命令模式,只关心行为,不关心具体执行类或实现。

你可能感兴趣的:(eclipse,设计模式,框架,JUnit,单元测试)