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

Yas*_*sin 9 java junit junit4 junit5

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

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

有任何想法吗?

mfu*_*n26 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(例如动态容器/测试)发布核心扩展点,然后创建并鼓励第三方创建利用它们的扩展(例如参数化测试)。

  • 经过更多思考之后,该陈述似乎并不完全正确。两种API都汇入相同的代码,但是它们似乎比我最初想象的更加相互独立。 (2认同)