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