带有PowerMockito的Junit规则:ClassNotPreparedException



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

我认为问题是由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提出了一个更通用的解决方案。

相关内容

  • 没有找到相关文章

最新更新