9

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

JUnit 5 文档中唯一“真正”的动态测试示例并不实用。

有任何想法吗?

4

1 回答 1

6

与 不同DynamicTestParameterizedTest它不是核心的一部分,junit-jupiter-api而是在一个名为的单独工件中junit-jupiter-params(请参阅3.12.1. 必需的设置)。这是因为 JUnit 5 的核心原则之一是“优先于扩展点而不是特性”(核心原则·junit-team/junit5 Wiki)。

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

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

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

于 2017-05-22T13:42:32.360 回答