动态测试与 JUnit 5 中的参数化测试有何不同?
How are Dynamic Tests different from Parameterized Tests in JUnit 5?
几乎所有我见过的动态测试的例子,都可以使用参数化测试进行修改和编写。因此,这是动态测试是唯一选项的实际场景,或者至少比参数化测试更适合。
JUnit 5 文档中唯一的 "truly" 动态测试示例不实用。
有什么想法吗?
不同于 DynamicTest
, ParameterizedTest
is not part of the core junit-jupiter-api
but is in a separate artifact named junit-jupiter-params
(see 3.12.1. Required Setup). This is because one of the core principles for JUnit 5 is to "prefer extension points over features" (Core Principles · junit-team/junit5 Wiki).
JUnit Jupiter API 定义了如何创建动态测试并将其注册为 JUnit 的扩展点,而 JUnit Jupiter Params 定义了更高级别的 API 用于定义参数化测试。
JUnit 5.0 M5 Milestone 的主题目前是 "dynamic containers and minor API changes"。有了这些预期的变化,测试开发人员不仅可以创建动态测试,还可以创建动态测试树(包含其他动态容器 and/or 测试的动态容器),这是目前参数化测试无法做到的。我认为,这将证明对创建类似规范的测试非常有用。
简而言之,我理解的想法是首先通过 "low-level" APIs(例如动态 containers/tests)发布核心扩展点,然后创建并鼓励第 3 方创建利用它们的扩展(例如参数化测试)。
几乎所有我见过的动态测试的例子,都可以使用参数化测试进行修改和编写。因此,这是动态测试是唯一选项的实际场景,或者至少比参数化测试更适合。
JUnit 5 文档中唯一的 "truly" 动态测试示例不实用。
有什么想法吗?
不同于 DynamicTest
, ParameterizedTest
is not part of the core junit-jupiter-api
but is in a separate artifact named junit-jupiter-params
(see 3.12.1. Required Setup). This is because one of the core principles for JUnit 5 is to "prefer extension points over features" (Core Principles · junit-team/junit5 Wiki).
JUnit Jupiter API 定义了如何创建动态测试并将其注册为 JUnit 的扩展点,而 JUnit Jupiter Params 定义了更高级别的 API 用于定义参数化测试。
JUnit 5.0 M5 Milestone 的主题目前是 "dynamic containers and minor API changes"。有了这些预期的变化,测试开发人员不仅可以创建动态测试,还可以创建动态测试树(包含其他动态容器 and/or 测试的动态容器),这是目前参数化测试无法做到的。我认为,这将证明对创建类似规范的测试非常有用。
简而言之,我理解的想法是首先通过 "low-level" APIs(例如动态 containers/tests)发布核心扩展点,然后创建并鼓励第 3 方创建利用它们的扩展(例如参数化测试)。