Я полагаю, что "сбои в @ до * методах" вы имеете в виду исключения? Если это так, вы можете использовать модель расширения следующим образом:
@ExtendWith(DumpEnvOnFailureExtension.class)
class SomeTest {
static class DumpEnvOnFailureExtension implements LifecycleMethodExecutionExceptionHandler {
@Override
public void handleBeforeAllMethodExecutionException(final ExtensionContext context, final Throwable ex)
throws Throwable {
System.out.println("handleBeforeAllMethodExecutionException()");
// dump env
throw ex;
}
}
@BeforeAll
static void setUpOnce() {
System.out.println("setUpOnce()");
throw new RuntimeException();
}
@Test
void test() throws Exception {
// some test
}
@AfterAll
static void tearDownOnce() {
System.out.println("tearDownOnce()");
}
}
Журнал будет:
setUpOnce()
handleBeforeAllMethodExecutionException()
tearDownOnce()
То есть расширение уведомляется, если метод @BeforeAll
завершается неудачей с исключением. (Обратите внимание, что это просто MWE, для фактической реализации вы должны извлечь DumpEnvOnFailureExtension
и использовать его там, где это необходимо.)
Для получения дополнительной информации см. Раздел «Обработка исключений» в руководство пользователя.