PowerMock没有剥离java final类修饰符

时间:2014-09-17 21:30:32

标签: java mocking mockito final powermock

尝试使用Mockito和PowerMock模拟最终课程我收到了错误:

    java.lang.IllegalArgumentException: Cannot subclass final class class MyFinalClass
    at org.mockito.cglib.proxy.Enhancer.generateClass(Enhancer.java:447)
    at org.mockito.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
    at org.mockito.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:217)
    at org.mockito.cglib.proxy.Enhancer.createHelper(Enhancer.java:378)
    at org.mockito.cglib.proxy.Enhancer.createClass(Enhancer.java:318)

这发生在一个巨大的项目中,然后为了隔离奇怪的效果我刚刚将MyFinalClass类提取到一个小测试项目中,现在我可以模拟它了。

做一些研究我还发现问题在于将类传递给PowerMock

    final MyFinalClass mock = PowerMockito.mock(MyFinalClass.class);

因为在我的巨大项目中进行并获得修饰符,它显示为公共和最终:

    MyFinalClass.class.getModifiers() == 17

但是在我的小测试项目中进行它只显示为公开:

    MyFinalClass.class.getModifiers() == 1

因为getModifiers()方法是原生的,所以我无法在其中进行调试,看看发生了什么。

有什么线索可以导致这个类修饰符不被PowerMock更改并留下作为最终类?或者我怎样才能发现为什么PowerMock在我的庞大项目中没有按预期工作

0 个答案:

没有答案
相关问题