我已经在JUnit5中编写了动态测试@TestFactory,现在我看到我不能对动态测试进行@Before
JUnit 5 User Guide - Writing Test Annotations

是否有任何变通办法可以执行@Before或类似于在TestFactory之前进行的操作?

我想放入@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。参考
Improve documentation of DynamicTest lifecycle


  动态测试生命周期
  
  动态测试的执行生命周期与标准@Test案例的执行生命周期完全不同。具体来说,没有用于动态测试的任何生命周期回调。这意味着对于动态测试,不会执行@BeforeEach和@AfterEach方法及其对应的扩展回调。换句话说,如果您在lambda表达式中访问来自测试实例的字段以进行动态测试,则这些字段将不会由回调方法或由同一@TestFactory方法生成的动态测试的执行之间的扩展名重置。

最佳答案

在动态测试中可以使用@BeforeAll / @AfterAll。参考
Improve documentation of DynamicTest lifecycle


  动态测试生命周期
  
  动态测试的执行生命周期与标准@Test案例的执行生命周期完全不同。具体来说,没有用于动态测试的任何生命周期回调。这意味着对于动态测试,不会执行@BeforeEach和@AfterEach方法及其对应的扩展回调。换句话说,如果您在lambda表达式中访问来自测试实例的字段以进行动态测试,则这些字段将不会由回调方法或由同一@TestFactory方法生成的动态测试的执行之间的扩展名重置。

07-27 15:19