哪个设计模式用于junit中的TestRunner类

时间:2014-04-11 03:38:11

标签: java design-patterns junit

我试图了解用于JUnit的TestRunner(package junit.textui)类的设计模式。 TestRunner类正在扩展一个监听器 并有听众的参考。

如果是Observer设计模式,那为什么呢 扩展听众?它应该只有听众的参考。

1 个答案:

答案 0 :(得分:3)

junit.textui.TestRunner符合Observer pattern,但它是观察者,而不是主题。至少,它成为观察者 - 它不再是。

JUnit公开TestListener接口:TestResult类运行TestCase,调用自己的方法startTestendTest。 TestResult还包含一个TestListener实例列表,并在测试开始或结束时通知所有实例。这是典型的Observer模式:TestResult是主题,通知其TestListener实例的集合,其中一个可能是TestRunner将自己添加到列表中。

那就是TestRunner doesn't currently add itself as a listener to TestResult,并且其所需的testStartedtestEndedtestFailed方法都是空的。相反,它会在监听器列表中添加ResultPrinter;我认为这在某种程度上是由TestRunner计算出来的。

因此,TestRunner被设置为Observer,但它不再像一个。总而言之,这实际上证明了设计模式的优势:它允许通过对这些特定接口进行编码来重构代码并分离行为。