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 метод должен быть выполнен.

Другие вопросы по тегам