我试图使用EasyMock + PowerMock模拟静态方法.如果我不模拟静态方法,那么我得到异常java.lang.ExceptionInInitializerError但是具有不同的堆栈跟踪,这纯粹是由于我的代码文件而且错误是显而易见的.但是,如果我使用EasyMock + PowerMock模拟静态方法,则PowerMock.mockStaticNice(Classname.class)行会抛出相同的异常但具有不同的堆栈跟踪.堆栈跟踪是:
java.lang.ExceptionInInitializerError
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at net.sf.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:386)
at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:219)
at net.sf.cglib.proxy.Enhancer.createHelper(Enhancer.java:377)
at net.sf.cglib.proxy.Enhancer.createClass(Enhancer.java:317)
at org.easymock.internal.ClassProxyFactory.createProxy(ClassProxyFactory.java:175)
at org.easymock.internal.MocksControl.createMock(MocksControl.java:114)
at org.easymock.internal.MocksControl.createMock(MocksControl.java:88)
at org.easymock.internal.MocksControl.createMock(MocksControl.java:79)
at org.powermock.api.easymock.PowerMock.doCreateMock(PowerMock.java:2212)
at org.powermock.api.easymock.PowerMock.doMock(PowerMock.java:2163)
at org.powermock.api.easymock.PowerMock.mockStaticNice(PowerMock.java:331)
at PackageName(ClassName.java:125)
............................
Run Code Online (Sandbox Code Playgroud)
第125行是PowerMock.mockStaticNice(Classname.class)
我已经尝试过这样:
1)在PrepareForTest中提及包含静态方法的类名({class1.class,class2.class,class3.class})
2)在@中模拟静态方法在注释之前.
我在最近2天遇到了这个问题.请提出解决方案.