junit - Jupiter Extensions 可以/应该用于自定义 JUnit5 引擎吗?

标签 junit junit5 junit-jupiter

请问自定义 JUnit5 TestEngine 中扩展支持的建议是什么?

由于扩展来自 junit-jupiter-api(而不是 junit 平台),尝试在自定义引擎中支持它们是不是一个坏主意? (有什么简单的方法可以做到这一点吗?)

我正在为 JBehave 测试编写一个自定义引擎,很容易为 Jupiter 重用一些扩展,如 TestcontainersExtension,但另一方面我想知道我正在考虑的是不是'出于某种原因这不是一个坏主意......对此有什么建议吗?或者是否有一些简单的方法可以为自定义引擎提供扩展支持? (理想情况下无需从 jupiter 引擎重新实现相同的代码)

最佳答案

在最初构思引擎 SPI 和 Jupiter 扩展时,我们已经在那里,我们没有考虑将扩展概念导出到其他引擎。原因是 Jupiter 的扩展点与测试生命周期的细节紧密耦合。看看许多不同的扩展点,它们只有在实例创建、设置、拆除、禁用、过滤、命名、存储和上下文像在 Jupiter 中一样工作时才有意义。

JBehave 是否能够或愿意支持所有这些细粒度的细微差别和微妙之处?否则,您将遇到一些 Jupiter 扩展将按预期与 JBehave 一起工作的问题,有些略有不同,而另一些则完全不同。另一个明显的缺点是与您拥有的完整 Jupiter API 的耦合。这就是为什么我决定让 jqwik.net 带有自己的扩展 API。

也就是说,有一些对许多引擎有意义的扩展注释,例如 Disabled,并且 IMO 是否应该从 Jupiter API 移出到一个公共(public)模块中。另一个想法是为某些类型的 Jupiter 扩展提供某种适配器,类似于 Jupiter 如何自动使用 JUnit 4 规则的子集。

关于junit - Jupiter Extensions 可以/应该用于自定义 JUnit5 引擎吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69226079/

相关文章:

java - Cucumber-junit-platform-engine 中的特征文件发现

android - 如何更改 TestEngine ID 以运行 JUnit 5?

spring-boot - 读取数据时违反约束

java - 有没有办法用 jUnit Jupiter 测试列表/集合的顺序?

java - 使用 AssertJ 1.x 软断言断言该方法不会抛出异常

java - 无法从资源测试文件夹加载资源

java - 如何仅对已更改的源文件运行单元测试?

java - JUnit 5 在 Debug模式下截断堆栈跟踪并使 JVM 崩溃

java - JPA EntityManager 在 @Transactional 方法之后阻塞

java - 如何在客户端接口(interface)中注入(inject)Mockito服务层