Как заполучить 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?

Или есть какой-то другой подход к решению этой проблемы?

Оцените, если есть какие-либо примеры / пример кода, пожалуйста.

0 ответов

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