PowerMock:在@PrepareForTest中添加特定的类后,出现“在常量池中使该类索引11012无效”错误

时间:2018-08-16 10:19:37

标签: java powermock

@PrepareForTest({ A.class, B.class, SomeJavaClass.class, D.class})
class ReportActionTest
{
    // JUnit class having around 10,000 lines of code
}

class SomeJavaClass
{
    //Java class having around 10,500 lines of code
}

ReportActionTest 的所有JUnit均正常执行,直到我在 SomeJavaClass 中添加了几个新方法为止。
添加新方法后,我尝试运行 ReportActionTest 的JUnit。
但是 ReportActionTest 无法加载。 以下是错误日志:

java.lang.ClassFormatError: Invalid this class index 11012 in constant pool in class file com/app/reports/web/action/SomeJavaClass
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(Unknown Source)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at org.powermock.core.classloader.MockClassLoader.loadMockClass(MockClassLoader.java:210)
    at org.powermock.core.classloader.MockClassLoader.loadModifiedClass(MockClassLoader.java:145)
    at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass(DeferSupportingClassLoader.java:65)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
    at java.lang.Class.getConstructor0(Unknown Source)
    at java.lang.Class.getConstructor(Unknown Source)
    at junit.framework.TestSuite.getTestConstructor(TestSuite.java:83)
    at org.powermock.modules.junit3.internal.impl.PowerMockJUnit3RunnerDelegateImpl.<init>(PowerMockJUnit3RunnerDelegateImpl.java:54)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.powermock.modules.junit3.internal.impl.JUnit3TestSuiteChunkerImpl.createDelegatorFromClassloader(JUnit3TestSuiteChunkerImpl.java:75)
    at org.powermock.modules.junit3.internal.impl.JUnit3TestSuiteChunkerImpl.createDelegatorFromClassloader(JUnit3TestSuiteChunkerImpl.java:37)
    at org.powermock.tests.utils.impl.AbstractTestSuiteChunkerImpl.createTestDelegators(AbstractTestSuiteChunkerImpl.java:217)
    at org.powermock.modules.junit3.internal.impl.JUnit3TestSuiteChunkerImpl.<init>(JUnit3TestSuiteChunkerImpl.java:46)
    ... 20 more

然后,我删除了 SomeJavaClass.class 的一些旧方法(不是新添加的方法)(只是为了减小它的大小)。 然后,我尝试运行已正确加载的 ReportActionTest ReportActionTest 的JUnit。

所以,我想知道,在 @PrepareForTest 中添加的类的大小是否有限制?
如果有人可以解释,我想了解这种行为。

0 个答案:

没有答案