переход от @RunWith к @ExtendWith - PullRequest
2 голосов
/ 06 ноября 2019

Мне нужно methodInvoker из JUnit4 в JUnit5, чтобы обернуть выполнение самого теста в выражение lambda. Данные интерфейсы, такие как AfterTestExecutionCallback, не позволят манипулировать самим исполнением. Пожалуйста, направьте меня с JUnit от 4 до 5 миграции? Переход от @RunWith к @ExtendWith. Как вы можете завершить выполнение самого теста с помощью JUnit 5?

Спасибо

enter image description here

1 Ответ

2 голосов
/ 06 ноября 2019

Вы можете сделать это путем реализации и регистрации InvocationInterceptor

public class SwingEdtInterceptor implements InvocationInterceptor {

    @Override
    public void interceptTestMethod(Invocation<Void> invocation,
            ReflectiveInvocationContext<Method> invocationContext,
            ExtensionContext extensionContext) throws Throwable {

        AtomicReference<Throwable> throwable = new AtomicReference<>();

        SwingUtilities.invokeAndWait(() -> {
            try {
                invocation.proceed();
            }
            catch (Throwable t) {
                throwable.set(t);
            }
        });
        Throwable t = throwable.get();
        if (t != null) {
            throw t;
        }
    }
}

Скопировано из https://junit.org/junit5/docs/current/user-guide/#extensions-intercepting-invocations

Похоже, ваш вариант использования может быть кандидатом на динамические тесты, иначе Тестлеты : https://junit.org/junit5/docs/current/user-guide/#writing-tests-dynamic-tests - Вы дали им попробовать?

...