`

JUnit源码结合设计模式解析

阅读更多

testResult 观察者中的主题目标类.
当它发生变化的时候,它会通知所以的观察者.

使它们能够及时得到通知.

testListenerTextImpl 具体监听者.

TestSuite 相当于组合模式中的树枝.树枝把树枝和树叶结合起来.主要的还是具体实现功能操作的还是树叶.

也就是TestCase.

suite.run(result);命令模式.



  Junit的底层代码主要由观察者模式,命令模式,组合模式,模板模式来实现的。
观察者模式:
在Junit里面,提供了一个观察者接口:TestListener。这个接口把一系列的测试过程的信息传递给观察者的操作,它的子类接受这些信息,并用它们自己的方式显示给用户。而被观察者就是TestResult对象。

这个对象有增加观察者的方法。Junit是把错误信息或异常信息放在一个List里面的,通过循环来遍历观察者的列表,并调用相应的更新方法,然后显示在我们页面上。

命令模式:
在Junit里面,Test接口是命令模式的接口。而TestCase和TestSuite是具体的命令。有了这个命令模式,我们不用去判断测试的类型,我们直接调用测试就行了。如果要增加新的TestCase也很容易,实现Test接口即可,不会影响到其他类。很明显,TestSuite是通过组合多个TestCase的复合命令。
 
组合模式:
TestSuite 相当于组合模式中的树枝.树枝把树枝和树叶结合起来.主要的还是具体实现功能操作的还是树叶.
也就是TestCase.

模板模式:
TestCase中runBare中的setUp和tearDown.
初始化代码应当在每一个测试之前执行并在测试方法运行后清理。在JUnit里面就是相应的setUp和tearDown方法。如果没有这两个方法,那么我们要在每个测试方法的代码内写上一大堆重复的初始化和清理代码,这是多么愚蠢的做法。那么JUnit是怎么让setUp和tearDown在测试执行前后被调用的.

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics