0

我正在评估 JUnit 的设计。

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

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

然而,v4.x 被证明要困难得多。经过一些分析,我无法真正找到其中的不同模式。然而,我确实找到了这个引用:“JUnit 3 到 JUnit 4 的演变浮现在脑海中。JUnit 3 是一个小型框架,它使用了多种模式,如 Composite、Template Method 和 Command。JUnit 4 利用了 J2SE 中引入的 Annotations 元编程工具5.0. 模式的使用消失了,框架演变成一小组注解加上一个执行注解 Java 代码的测试运行器基础设施。”

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

所以,我在这里有点束缚。我不确定如何分析 v4.x。是没有明确设计的底线吗?这是一堆乱七八糟的代码?还是我错过了什么,背后有什么设计?

4

1 回答 1

2

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

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

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

此外,20 Gang of Four Patterns 并不是唯一的设计模式。有许多在 Junit 3 中很难或笨拙的测试特定模式,现在在 JUnit 4 中很容易做到。例如,测试夹具设置和测试夹具拆卸都必须在 Junit 3 中手动完成,并且通常会导致错误在测试类之间未正确重置固定装置。现在 Junit 4 有@BeforeClassand @AfterClass(还有模板方法)。

我建议阅读Gerard Meszaros 的XUnit 测试模式。它是用 JUnit 3 天编写的,但仍然适用。

于 2013-10-14T20:07:26.817 回答