Я написал динамический тест @TestFactory
в JUnit5, теперь я вижу, что не могу выполнить @Before
для динамического теста, ссылаясь на Руководство пользователя JUnit 5 — Написание тестовых аннотаций.
Есть ли обходной путь для выполнения @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
возможно в динамическом тесте. Ссылаясь на улучшение документации жизненного цикла DynamicTest
Динамический жизненный цикл тестирования
Жизненный цикл выполнения динамического теста сильно отличается от стандартного случая
@Test
. В частности, для динамических тестов нет никаких обратных вызовов жизненного цикла. Это означает, что методы@BeforeEach
и@AfterEach
и соответствующие им обратные вызовы расширений не выполняются для динамических тестов. Другими словами, если вы получаете доступ к полям из тестового экземпляра в лямбда-выражении для динамического теста, эти поля не будут сбрасываться методами обратного вызова или расширениями между выполнением динамических тестов, сгенерированных одним и тем же методом@TestFactory
.