有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案