Я использую cucumber-jvm
в своих тестах интеграции, и мне нужно выполнить некоторый код после завершения всех сценариев, только один раз.AfterAll global hook cucumber-jvm
После прочтения внимательно некоторые сообщения, как this и рассмотрел это сообщил issue, я достиг его делать что-то вроде этого:
public class ContextSteps {
private static boolean initialized = false;
@cucumber.api.java.Before
public void setUp() throws Exception {
if (!initialized) {
// Init context. Run just once before first scenario starts
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
// End context. Run just once after all scenarios are finished
}
});
initialized = true;
}
}
}
Я думаю инициализации контекста (эквивалент BeforeAll
) сделано таким образом, это хорошо , Однако, несмотря на то, что он работает, я не уверен, что если использовать AfterAll
с использованием Runtime.getRuntime().addShutdownHook()
, это хорошая практика.
Итак, вот мои вопросы:
- Должен ли я избежать
Runtime.getRuntime().addShutdownHook()
реализоватьAfterAll
? - Есть ли еще лучший выбор для эмуляции поведения
AfterAll
в cucumber-jvm?
Заранее за помощь.
Спасибо, что ответили на @Verhagen! Следуя вашим советам, я в конечном итоге позвоню своему классу/методу в фазе пост-интеграции-теста, используя плагин maven exec. Я согласен с вами, что, вероятно, это был бы лучший выбор. Просто укажите, что я не совсем уверен, могу ли я использовать аннотации junit с cucumber-jvm. Я думаю, что есть некоторые открытые проблемы. Еще раз спасибо! – troig