【发布时间】:2018-08-31 05:19:41
【问题描述】:
我正在使用 JUnit 5.3.0-RC1,试图为新的TestInstanceFactory 接口实现扩展。 (我想从 Weld 获取对象用于 CDI 注入等)
如果我实现TestInstanceFactory,我可以创建自己的实例。如果我还实现了AfterEachCallback,我可以在每次测试后清理它们(关闭 Weld)。到目前为止,一切顺利。
但是:为此我必须假设TestInstance.LifeCycle.PER_METHOD。如果测试类使用TestInstance.Lifecycle.PER_CLASS,我将不得不检测到这一点并等到AfterAllCallback 再销毁Weld。但是ExtensionContext.getTestInstanceLifecycle 被声明为Optional,所以我可能无法判断哪个生命周期处于活动状态。
有没有办法让 JUnit 简单地告诉我何时销毁实例?最好有一个像 TestInstanceDestructor 这样的扩展,只要 JUnit 使用完测试实例就会调用它。
其次,AfterEachCallback 永远不会调用 @Disabled 测试,这意味着我无法清理通过我的 TestInstanceFactory 创建的实例。开始焊接有点贵,所以理想情况下,无论如何我都会跳过为禁用测试做这项工作。有什么方法可以告诉我正在为禁用测试创建哪些实例?
【问题讨论】:
标签: junit5 junit5-extension-model