mocking PowerMock不剥离java最终类修饰符
试图使用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) 个答案