Closed GoogleCodeExporter closed 9 years ago
This looks like a problem in Javassist that PowerMock depends on to do
byte-code manipulation. You should probably report it to javassist instead so
that they can fix it.
Original comment by johan.ha...@gmail.com
on 22 Sep 2010 at 1:12
Thanks for reply. Does this mean PowerMock.createMock never works because of
this javassist problem? Or if it works can you please let me know the
compatible versions what version of PowerMock and what version of javassist
will work together?
Thanks
Original comment by ago...@gmail.com
on 22 Sep 2010 at 2:37
It may never work for your specific use-case unless javassist fixes the bug :(
PowerMock 1.4.5 is compatible with javassist 3.13.0.GA and probably 3.12.0.GA
as well. It would be really good if you reported it to javassist. Perhaps
PowerMock can create a work-around in the way we use javassist.
Original comment by johan.ha...@gmail.com
on 22 Sep 2010 at 4:27
Thanks for your reply. I've tried using javassist's version 3.12.0.GA and
3.13.0.GA but still the exception is same:
java.lang.IllegalArgumentException: java.io.ByteArrayInputStream is not an
interface
at java.lang.reflect.Proxy.getProxyClass(Proxy.java:362)
at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:581)
at org.easymock.internal.JavaProxyFactory.createProxy(JavaProxyFactory.java:12)
at org.easymock.internal.MocksControl.createMock(MocksControl.java:37)
at org.powermock.api.easymock.PowerMock.doCreateMock(PowerMock.java:2211)
at org.powermock.api.easymock.PowerMock.doMock(PowerMock.java:2162)
at org.powermock.api.easymock.PowerMock.createMock(PowerMock.java:98)
at net.plus.kbd.core.drools.DroolsFlowManagerTest.testReverseFlow(DroolsFlowManagerTest.java:102)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:66)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:322)
at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:86)
at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:94)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.executeTest(PowerMockJUnit44RunnerDelegateImpl.java:309)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTestInSuper(PowerMockJUnit47RunnerDelegateImpl.java:112)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTest(PowerMockJUnit47RunnerDelegateImpl.java:73)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runBeforesThenTestThenAfters(PowerMockJUnit44RunnerDelegateImpl.java:297)
at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:84)
at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:49)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.invokeTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:222)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.runMethods(PowerMockJUnit44RunnerDelegateImpl.java:161)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$1.run(PowerMockJUnit44RunnerDelegateImpl.java:135)
at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:34)
at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:44)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.run(PowerMockJUnit44RunnerDelegateImpl.java:133)
at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.run(JUnit4TestSuiteChunkerImpl.java:112)
at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.run(AbstractCommonPowerMockRunner.java:57)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
I was wondering, does PowerMock automatically uses the EasyMock's class
extensions? Or is there a way to specify that. I've looked at the examples on
the website but it doesn't say anything about that. It just says to mock any
classes with final methods etc just use PowerMock.createMock. But it looks
appears to me that PowerMock is not using class extensions. Any idea?
Thank you.
Original comment by ago...@gmail.com
on 23 Sep 2010 at 9:20
You need to use version 3 of EasyMock if you're using version 1.4.5 of
PowerMock! The classextensions module of EasyMock is deprecated and can now by
default mock classes as well.
Original comment by johan.ha...@gmail.com
on 23 Sep 2010 at 9:36
After using version 3 of EasyMock, the problem is gone. Thank you for your help.
Original comment by ago...@gmail.com
on 23 Sep 2010 at 12:46
Thanks for the Information, really helped.
Original comment by rajeev.i...@gmail.com
on 25 Oct 2011 at 5:48
Original issue reported on code.google.com by
ago...@gmail.com
on 22 Sep 2010 at 11:23