0

我正在使用 PowerMockito 测试一些静态类,有时测试会失败,为了克服这个问题,我创建了一个自定义的 JUnit 规则来重新运行失败测试。该规则工作正常,但每当重新执行测试时,它再次失败,但这次是在mockStatic(StaticClass.class)抛出异常的指令处org.powermock.api.mockito.ClassNotPreparedException。为什么 @PrepareForTest 仅在第一次运行时执行,而不是在重新运行测试时执行。

4

1 回答 1

0

我认为问题是由 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这里提出了针对这个问题的更一般的解决方案。

于 2020-04-22T14:38:26.400 回答