Java PowerMock:在@PrepareForTest中添加特定类后,获取';常量池中的此类索引11012无效';错误

Java PowerMock:在@PrepareForTest中添加特定类后,获取';常量池中的此类索引11012无效';错误,java,powermock,Java,Powermock,在我在SomeJavaClass中添加了一些新方法之前,ReportActionTest的所有JUnit都正常执行 添加新方法后,我尝试运行JUnits ofReportActionTest 但无法加载ReportActionTest。 以下是错误日志: @PrepareForTest({ A.class, B.class, SomeJavaClass.class, D.class}) class ReportActionTest { // JUnit class having arou

在我在SomeJavaClass中添加了一些新方法之前,ReportActionTest的所有JUnit都正常执行
添加新方法后,我尝试运行JUnits ofReportActionTest
但无法加载ReportActionTest。 以下是错误日志:

@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
}
java.lang.ClassFormatError:类文件com/app/reports/web/action/SomeJavaClass中常量池中的该类索引11012无效
位于java.lang.ClassLoader.defineClass1(本机方法)
位于java.lang.ClassLoader.DefineClassSecond(未知源)
位于java.lang.ClassLoader.defineClass(未知源)
位于java.lang.ClassLoader.defineClass(未知源)
位于org.powermock.core.classloader.MockClassLoader.loadMockClass(MockClassLoader.java:210)
位于org.powermock.core.classloader.MockClassLoader.loadModifiedClass(MockClassLoader.java:145)
位于org.powermock.core.classloader.DeferSupportingClassLoader.loadClass(DeferSupportingClassLoader.java:65)
位于java.lang.ClassLoader.loadClass(未知源)
位于java.lang.Class.getDeclaredConstructors0(本机方法)
位于java.lang.Class.privateGetDeclaredConstructors(未知源)
位于java.lang.Class.getConstructor0(未知源)
位于java.lang.Class.getConstructor(未知源)
位于junit.framework.TestSuite.getTestConstructor(TestSuite.java:83)
位于org.powermock.modules.junit3.internal.impl.powermockjunit3runnerdelegateinpl.(powermockjunit3runnerdelegateinpl.java:54)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(未知源)
位于sun.reflect.delegatingConstructor或AccessorImpl.newInstance(未知源)
位于java.lang.reflect.Constructor.newInstance(未知源)
位于org.powermock.modules.junit3.internal.impl.JUnit3TestSuiteChunkerImpl.createDelegatorFromClassloader(JUnit3TestSuiteChunkerImpl.java:75)
位于org.powermock.modules.junit3.internal.impl.JUnit3TestSuiteChunkerImpl.createDelegatorFromClassloader(JUnit3TestSuiteChunkerImpl.java:37)
位于org.powermock.tests.utils.impl.AbstractTestSuiteChunkerImpl.createTestDelegators(AbstractTestSuiteChunkerImpl.java:217)
位于org.powermock.modules.junit3.internal.impl.JUnit3TestSuiteChunkerImpl。(JUnit3TestSuiteChunkerImpl.java:46)
... 20多
然后我删除了SomeJavaClass.class的一些旧方法(不是新添加的方法)(只是为了减小它的大小)。 然后我尝试运行正确加载的ReportActionTestReportActionTest的JUnits

所以,我想知道,在@PrepareForTest中添加的类的大小是否有任何限制?

如果有人能解释的话,我想了解这种行为。

把相关的代码片段放到这里。请提供一个最小、完整且可验证的示例。向我们展示您最近一次尝试的代码以及您被卡住的地方。并解释为什么结果不是你所期望的。与PowerMock(ito)合作的乐趣。当您必须测试无法重构的遗留代码时,该框架有它的位置。。。但老实说,真正的答案是:当您需要PowerMock(ito)进行测试时,很可能是因为您编写了难以测试的代码。不仅单元测试很难,功能测试也很难。几年前我们停止使用PowerMock,因为这里或那里有奇怪的错误,特别是在模拟静态内容时。我们现在专注于编写“易于测试”的代码。我们使用简单的Mockito结构进行所有测试。猜猜怎么着:它真的管用!更好的是:这也有助于提高我们产品代码的质量。所以,正如你所说:如果你有选择,考虑停止使用PosiMoCK。
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