Junit源码分析-设计模式

Junit的底层代码主要是由观察者模式,组合模式,模板模式,命令模式 来实现的。

在Junit里首先会初始化一个主题对象testResult对象,这个对象里面有增加监听器的方法,所有的监听器方法都实现了

testListener接口,这个接口会把一系统测试过程的信息传递给所有的监听器,然后监听器会按照它们的方式显示给用

户,在这里就用到了观察者模式 ,观察者模式就是定义对象间的一种一对多的依赖关系,解决多个对象间相互依赖关系的相

互通知。我们是让多个观察者对象同时监听某一个主题对象。testResult就是一个被观察者,testListener就是一个观察者接口,只要testResult发生了变化,那么所有实现testListener接口的监听器全都会得到响应并作出相应的变化。我们增加一个监听器也是非常的简单,直接实现testListener接口就行了,扩展性非常的强。

然后通过Test接口多态生成一个testSuite对象,在这里它用到了组合模式 ,组合模式就是将对象以树形结构组织起来,以达到“部分与整体”的层次结构,使客户使用单个对象和组合对象的具有一致性。TestSuite相当于树形结构的树枝,而所有测试类的父类TestCase就相当于树叶。当我们执行TestSuite里的run方法的时候,它会遍历这个集合,调用每个TestCase对象里的run方法对所有的测试类进行测试。
在Junit里,TestCase在执行测试之前和测试之后都要进行一些处理。如我们在测试之前要调用setUp进行一些初始化,比如说数据库连接等。在测试完以后要调用teardown方法进行一些清理工作,如释放数据库连接等。Junit它在这里用到模板模式 ,模板模式就是父类定义流程,子类定义实现。Junit它就提供setUp和teardown方法,在每次测试之前和之后调用。这样我们测试就省去了不少的重复代码。最后就是运行Junit。它在这里用到命令模式 ,命令模式就是把一个对象的行为封装成了一个对象,这样我们就不用去关心实现这个行为的具体细节了。在Junit源码中,运行Junit直接执行Test接口的run方法就可以了,我们不用去关心它内部是怎么实现的了。
看完之后,还请各位前辈们为小弟指点指点!!!

你可能感兴趣的:(设计模式,数据结构,工作,JUnit)