动态测试与JUnit 5中的参数化测试有何不同?

时间:2017-05-21 11:25:22

标签: java junit junit4 junit5

我见过的几乎所有动态测试示例都可以使用参数化测试进行重写和编写。因此,这是一个实际场景,其中动态测试是唯一的选择,或者至少比参数化测试更合适。

JUnit 5 docs中唯一的“真正”动态测试示例是不切实际的。

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

DynamicTest不同,ParameterizedTest不属于核心junit-jupiter-api,而是位于名为junit-jupiter-params的单独工件中(请参阅3.12.1. Required Setup)。这是因为JUnit 5的核心原则之一是优先考虑扩展点而不是特征" (Core Principles · junit-team/junit5 Wiki)。

JUnit Jupiter API定义了如何创建和注册动态测试作为JUnit的扩展点,而JUnit Jupiter Params定义了一个更高级别的API来定义参数化测试。

JUnit 5.0 M5 Milestone的主题目前是"动态容器和次要API更改"。通过这些预期的更改,测试开发人员不仅可以创建动态测试,还可以创建动态测试树(包含其他动态容器和/或测试的动态容器),这是目前无法通过参数化测试完成的。我认为,这将证明对创建类似规范的测试非常有用。

简而言之,我理解的想法是首先通过"低级"发布核心扩展点。 API(例如动态容器/测试)然后创建并鼓励第三方创建利用它们的扩展(例如参数化测试)。