我已经@TestFactory
在 JUnit5 中编写了一个动态测试,现在我看到我不能@Before
为动态测试做,参考
JUnit 5 User Guide - Writing Test Annotations。
在 TestFactory 之前是否有任何解决方法可以执行@Before
或类似操作?
我想加入的方法,@Before
因为它只是初始化的东西:
public static void initialize() throws Exception{
buildTest = new XQueryTestHelper();
buildTest.initialization();
listTestSuiteIdentifier = buildTest.getListTestsuiteIdentifier();
arrayHdrInbPayTestcases = buildTest.getHdrInbPayTestcases();
arrayHeaderAndBodyTestcases = buildTest.getHeaderAndBodyTestcases();
listHeaderAndBodyTestSuites = buildTest.getHeaderAndBodyTestSuites();
listHdrInbPayTestSuites = buildTest.getHdrInbPayTestsuites();
}
解决方案:
在动态测试中使用@BeforeAll
/@AfterAll
是可能的。参考
改进 DynamicTest 生命周期的文档
动态测试生命周期
@Test
动态测试的执行生命周期与标准案例的执行生命周期完全不同。具体来说,动态测试没有任何生命周期回调。这意味着动态测试不会执行@BeforeEach
和@AfterEach
方法及其相应的扩展回调。换句话说,如果您从 lambda 表达式中的测试实例访问动态测试的字段,这些字段将不会被回调方法或由同一@TestFactory
方法生成的动态测试的执行之间的扩展重置。