Правило Junit с PowerMockito: ClassNotPreparedException - PullRequest
0 голосов
/ 21 апреля 2020

Я работал над тестированием некоторых классов stati c с использованием PowerMockito, а иногда и с ошибкой теста, чтобы преодолеть эту проблему, создать настройку JUnit Rule для повторного запуска тестов на сбой. Правило работает нормально, но всякий раз, когда тест повторяется, он снова не выполняется, но на этот раз по инструкции mockStatic(StaticClass.class), которая выдает исключение org.powermock.api.mockito.ClassNotPreparedException. Почему @PrepareForTest выполняется только при первом запуске, но не при повторном запуске теста.

1 Ответ

0 голосов
/ 22 апреля 2020

Я думаю, что проблема была вызвана PowerMock, когда он создал глубокий клон моих правил. Чтобы преодолеть эту проблему, я использовал цепочку правил JUnit:

RuleChain.outerRule((base, description) -> {
        try {
            final FrameworkMethod method = new FrameworkMethod(
                    description.getTestClass().getMethod(description.getMethodName()));
            return (new PowerMockRule()).apply(base, method, this);
        } catch (NoSuchMethodException | SecurityException e) {
            throw new RuntimeException(e);
        }
    }).around(myRetryRule).around(otherRules).....

Здесь предлагается более общее решение этой проблемы MergedRule , 2 , 3 .

...