Как заполучить RunNotifier при переносе пользовательского бегуна JUnit4 в JUnit5
Я нахожусь в процессе написания эквивалентного бегуна JUnit4 в JUnit5. Мне посоветовали использовать @ExtendWith
модель.
Но при реализации старых бегунов JUnit4 с использованием нового JUnit5 extension
Я столкнулся с этой проблемой. то есть нет RunNotifier notifier
доступно в ExtensionContext.
В наших тестах двигатель / бегун, мы читаем @MyTestResource("test/withdrawal1_dsl.json")
и после обработки данных мы проверяем результат. Затем, если результат (несколько полей) не соответствует ожиданиям ((несколько полей), мы собираем сообщения об ошибках и затем проваливаем тест, вызывая
notifier.fireTestFailure(new Failure(description, new RuntimeException( customMultipleFailureMsgs)));
Пример кода выглядит ниже
@Override
protected void runChild(FrameworkMethod method, RunNotifier notifier) {
notifier.fireTestStarted(description);
final Description description = describeChild(method);
MyTestResource annotation = method.getMethod().getAnnotation(MyTestResource.class);
...
...
// Here we read this "test/withdrawal1_dsl.json" via @MyTestResource
// and process the desired operation described in the JSON file.
LOGGER.debug("### Running test : " + currentTestCase);
MyTest child = null;
try {
child = smartUtils.jsonFileToJava(currentTestCase, MyTest.class);
// runTest(...) method does the business logic and collects all failures,
// then calls "notifier.firetestFailure(...)"
passed = myTestProcessor.runTest(child, notifier, description);
} catch (Exception ex) {
notifier.fireTestFailure(new Failure(description, ex));
}
if(!passed){
notifier.fireTestFailure(new Failure(description, new Exception(failedMsgs)));
}
notifier.fireTestFinished(description);
}
Пример фрагмента MyCustomRunner приведен здесь для справки.
Как заполучить уведомитель RunNotifier в JUnit5?
Или есть какой-то другой подход к решению этой проблемы?
Оцените, если есть какие-либо примеры / пример кода, пожалуйста.