junit5: как разобраться, действительно ли тест дополнен методами @Before/AfterEach
Я пишу небольшое расширение, которое сообщает мне в моем журнале, когда тест начинается, поэтому я знаю, какие журналы связаны с какими тестами:
public class LoggingExtension implements Extension, BeforeEachCallback, AfterTestExecutionCallback {
protected final Logger log = LoggerFactory.getLogger(getClass());
@Override
public void beforeEach(final ExtensionContext context) throws Exception {
log.info("-- Test @before: {}::{} ----------------------------------------",
context.getDisplayName(),
context.getTestClass().map(x -> x.getSimpleName()).orElse("no test class available"));
}
/**
* (non-Javadoc) ${see_to_overridden}
*/
@Override
public void afterTestExecution(final ExtensionContext context) throws Exception {
context.getExecutionException()
.ifPresent(ex -> {
log.error("-- Test @after: {}::{} ----------------------------------------",
context.getDisplayName(),
context.getTestClass().map(x -> x.getSimpleName()).orElse("no test class available"),
ex);
// log.error("", ex);
});
}
}
Я хотел изменить это так:
- журнал
-- Test @start: ...
когда сам тест начинается (т. е. использоватьBeforeTestExecutionCallback
) - и использовать
BeforeEachCallback
чтобы отметить начало@BeforeEach
выполнение (я), но только в том случае, если на самом деле выполняется предшествующий код, чтобы избежать беспорядка.
Итак, вопрос: как я могу определить, есть ли на самом деле 1..n @BeforeEach
методы, которые выполняются?
Я исследовал ExtensionContext
но подошел пустой
0 ответов
Итак, вопрос таков: как я могу определить, выполняются ли на самом деле 1..n методы @BeforeEach?
Начиная с JUnit Jupiter 5.4, официального способа выяснить это не существует. Эта информация не предоставляется никаким пользовательским API: она является внутренней для JUnit Jupiter TestEngine
,
Тем не менее, новый InvocationInterceptor
API расширения, входящий в состав JUnit Jupiter 5.5, предоставит способ определить, является ли @BeforeEach
метод должен быть выполнен.