JUnit Design在模式方面

时间:2013-10-14 07:52:05

标签: design-patterns junit

我正在评估JUnit的设计。

导入的JUnit有两个重要部分:v3.x的代码(向后兼容性原因)和v4.x的代码。

v3.x有一个非常清晰的设计,我已经确定了多种模式和良好的OO实践(模板方法模式,复合,适配器等)。

v4.x然而事实证明要困难得多。经过一些分析后,我一直无法真正找到不同的模式。我确实找到了这个引用:“JUnit 3演变为JUnit 4。JUnit 3是一个小型框架,它使用了复合,模板方法和命令等几种模式.JUnit 4利用了J2SE中引入的Annotations元编程工具。 5.0。模式的使用消失了,框架演变成一小组注释以及执行带注释的Java代码的测试运行器基础结构。“

来自http://www.informit.com/articles/article.aspx?p=1404056

所以,我在这里有点束缚。我不确定如何分析v4.x.底线是否没有明确的设计?这是一个混乱的代码?或者我错过了什么,背后有什么设计?

1 个答案:

答案 0 :(得分:2)

JUnit 4中的模式与Junit 3中的模式相同。不同之处在于,不再需要所有测试类必须是TestCase的子类的继承限制。

我仍然认为JUnit 4仍然使用模板方法它只是模板化方法的名称不仅限于单个名称。现在,不是使用在每次测试之前首先调用的模板方法void setup(),而是模板“调用所有方法,无论它们是什么名称,都由@Before注释注释。”模板模式仍然存在。

类似地,命令模式仍然存在:而不是调用以“test”作为命令开头的每个public void无参数方法,JUnit 4反而调用具有{的任何public void无参数方法{1}}注释。

此外,20个四人模式并不是唯一的设计模式。在Junit 3中有很多特定于测试的模式,现在很容易在JUnit 4中完成。例如,测试夹具设置和测试夹具拆解都必须在Junit 3中手动完成,并且经常会导致错误在测试类之间没有正确重置灯具的地方。现在,Junit 4有@Test@BeforeClass(也是模板方法)。

我建议阅读Gerard Meszaros的 XUnit Test Patterns 。它是在JUnit 3天写的,但仍然适用。