使用 JUnit 4,可以使用运行器控制测试实例的生命周期。例如,我曾经实现了一个微调实例创建的方法createTest()
(BlockJUnit4ClassRunner
在我的例子中,使用 Weld 来检索一个 CDI 就绪的实例)。
在 JUnit 5 中,扩展应该取代跑步者和规则。然而,我无法像使用 JUnit 4 那样找到创建测试实例的方法。
有没有办法告诉 JUnit Jupiter 如何在不使用动态测试的情况下创建我的测试实例(例如,使用 Weld 容器)?
这是我现在在 JUnit 4 中所做的,并且希望能够在 Jupiter 中做:
public class ContainerRunner extends BlockJUnit4ClassRunner {
private WeldContainer container;
...
@Override
public Object createTest() {
return container.select(this.getTestClass().getJavaClass()).get();
}
}
然后:
@RunWith(ContainerRunner.class)
@Singleton
public class ContainedTest {
@Inject
private Logger logger; // this works
@Test
public void testSomething() {
...
}
}
感谢您的任何见解。