Problem with mocking Seam Component class

266 views
Skip to first unread message

Andrey Chernyshev

unread,
Apr 27, 2010, 3:10:19 AM4/27/10
to PowerMock
Hi.

I wish to use PowerMock for testing my method which calls
Component.getInstance(name). Others class working well but when I try
to use @PrepareForTest for preparing mock for
org.jboss.seam.Component, get exception:

Internal Error occured.
java.lang.IllegalStateException: Failed to transform class with name
org.jboss.seam.Component. Reason: duplicate method: <init>
at
org.powermock.core.classloader.MockClassLoader.loadMockClass(MockClassLoader.java:
208)
at
org.powermock.core.classloader.MockClassLoader.loadModifiedClass(MockClassLoader.java:
146)
at
org.powermock.core.classloader.DeferSupportingClassLoader.loadClass(DeferSupportingClassLoader.java:
63)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at
sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:
95)
at
sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:
107)
at
sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:
31)
at
sun.reflect.annotation.AnnotationParser.parseSig(AnnotationParser.java:
370)
at
sun.reflect.annotation.AnnotationParser.parseClassValue(AnnotationParser.java:
351)
at
sun.reflect.annotation.AnnotationParser.parseClassArray(AnnotationParser.java:
653)
at
sun.reflect.annotation.AnnotationParser.parseArray(AnnotationParser.java:
460)
at
sun.reflect.annotation.AnnotationParser.parseMemberValue(AnnotationParser.java:
286)
at
sun.reflect.annotation.AnnotationParser.parseAnnotation(AnnotationParser.java:
222)
at
sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:
69)
at
sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:
52)
at java.lang.Class.initAnnotationsIfNecessary(Class.java:3070)
at java.lang.Class.getAnnotations(Class.java:3050)
at
org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.classAnnotations(PowerMockJUnit44RunnerDelegateImpl.java:
178)
at
org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.getDescription(PowerMockJUnit44RunnerDelegateImpl.java:
170)
at
org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.getDescription(JUnit4TestSuiteChunkerImpl.java:
182)
at
org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.getDescription(AbstractCommonPowerMockRunner.java:
50)
at
com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:
65)
at
com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:
165)
at
com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:
60)
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 com.intellij.rt.execution.application.AppMain.main(AppMain.java:
110)
Caused by: javassist.CannotCompileException: duplicate method: <init>
at javassist.bytecode.ClassFile.testExistingMethod(ClassFile.java:
548)
at javassist.bytecode.ClassFile.addMethod(ClassFile.java:528)
at javassist.CtClassType.addConstructor(CtClassType.java:1148)
at org.powermock.core.transformers.impl.MainMockTransformer
$PowerMockExpressionEditor.addNewDeferConstructor(MainMockTransformer.java:
347)
at org.powermock.core.transformers.impl.MainMockTransformer
$PowerMockExpressionEditor.addNewDeferConstructor(MainMockTransformer.java:
352)
at org.powermock.core.transformers.impl.MainMockTransformer
$PowerMockExpressionEditor.edit(MainMockTransformer.java:291)
at javassist.expr.ExprEditor.loopBody(ExprEditor.java:206)
at javassist.expr.ExprEditor.doit(ExprEditor.java:90)
at javassist.CtClassType.instrument(CtClassType.java:1224)
at
org.powermock.core.transformers.impl.MainMockTransformer.transform(MainMockTransformer.java:
70)
at
org.powermock.core.classloader.MockClassLoader.loadMockClass(MockClassLoader.java:
204)
... 30 more
java.lang.IllegalStateException: Failed to transform class with name
org.jboss.seam.Component. Reason: duplicate method: <init>
at
org.powermock.core.classloader.MockClassLoader.loadMockClass(MockClassLoader.java:
208)
at
org.powermock.core.classloader.MockClassLoader.loadModifiedClass(MockClassLoader.java:
146)
at
org.powermock.core.classloader.DeferSupportingClassLoader.loadClass(DeferSupportingClassLoader.java:
63)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at
sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:
95)
at
sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:
107)
at
sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:
31)
at
sun.reflect.annotation.AnnotationParser.parseSig(AnnotationParser.java:
370)
at
sun.reflect.annotation.AnnotationParser.parseClassValue(AnnotationParser.java:
351)
at
sun.reflect.annotation.AnnotationParser.parseClassArray(AnnotationParser.java:
653)
at
sun.reflect.annotation.AnnotationParser.parseArray(AnnotationParser.java:
460)
at
sun.reflect.annotation.AnnotationParser.parseMemberValue(AnnotationParser.java:
286)
at
sun.reflect.annotation.AnnotationParser.parseAnnotation(AnnotationParser.java:
222)
at
sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:
69)
at
sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:
52)
at java.lang.Class.initAnnotationsIfNecessary(Class.java:3070)
at java.lang.Class.getAnnotations(Class.java:3050)
at
org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.classAnnotations(PowerMockJUnit44RunnerDelegateImpl.java:
178)
at
org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.getDescription(PowerMockJUnit44RunnerDelegateImpl.java:
170)
at
org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.getDescription(JUnit4TestSuiteChunkerImpl.java:
182)
at
org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.getDescription(AbstractCommonPowerMockRunner.java:
50)
at org.junit.runner.JUnitCore.run(JUnitCore.java:156)
at
com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:
94)
at
com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:
165)
at
com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:
60)
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 com.intellij.rt.execution.application.AppMain.main(AppMain.java:
110)
Caused by: javassist.CannotCompileException: duplicate method: <init>
at javassist.bytecode.ClassFile.testExistingMethod(ClassFile.java:
548)
at javassist.bytecode.ClassFile.addMethod(ClassFile.java:528)
at javassist.CtClassType.addConstructor(CtClassType.java:1148)
at org.powermock.core.transformers.impl.MainMockTransformer
$PowerMockExpressionEditor.addNewDeferConstructor(MainMockTransformer.java:
347)
at org.powermock.core.transformers.impl.MainMockTransformer
$PowerMockExpressionEditor.addNewDeferConstructor(MainMockTransformer.java:
352)
at org.powermock.core.transformers.impl.MainMockTransformer
$PowerMockExpressionEditor.edit(MainMockTransformer.java:291)
at javassist.expr.ExprEditor.loopBody(ExprEditor.java:206)
at javassist.expr.ExprEditor.doit(ExprEditor.java:90)
at javassist.CtClassType.instrument(CtClassType.java:1224)
at
org.powermock.core.transformers.impl.MainMockTransformer.transform(MainMockTransformer.java:
70)
at
org.powermock.core.classloader.MockClassLoader.loadMockClass(MockClassLoader.java:
204)
... 31 more

--
You received this message because you are subscribed to the Google Groups "PowerMock" group.
To post to this group, send email to powe...@googlegroups.com.
To unsubscribe from this group, send email to powermock+...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/powermock?hl=en.

Johan Haleby

unread,
Apr 27, 2010, 4:13:39 PM4/27/10
to powe...@googlegroups.com
Seems like a bug. If you could create a new issue and provide a small example project it would be really good.

/Johan

Andrey Chernyshev

unread,
Apr 28, 2010, 3:14:40 AM4/28/10
to PowerMock
I fix it. It's not a bug. We use old version of javassist-3.3, then we
update it to 3.12. And now everything ok :)

On 28 апр, 05:13, Johan Haleby <johan.hal...@gmail.com> wrote:
> Seems like a bug. If you could create a new
> issue<http://code.google.com/p/powermock/issues/list> and
> > 50)
> >  at org.junit.runner.JUnitCore.run(JUnitCore.java:156)
> >  at
>
> > com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTest Runner.java:
> > 94)
> >  at
>
> > com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitSt arter.java:
> > 204)
> >  ... 31 more
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "PowerMock" group.
> > To post to this group, send email to powe...@googlegroups.com.
> > To unsubscribe from this group, send email to
> > powermock+...@googlegroups.com<powermock%2Bunsubscribe@googlegroups .com>
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/powermock?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups "PowerMock" group.
> To post to this group, send email to powe...@googlegroups.com.
> To unsubscribe from this group, send email to powermock+...@googlegroups.com.
> For more options, visit this group athttp://groups.google.com/group/powermock?hl=en.

Johan Haleby

unread,
Apr 28, 2010, 3:22:48 AM4/28/10
to powe...@googlegroups.com
Great! Good to hear that you got it working with 3.12, I still haven't found time to try PowerMock with that version.

/Johan
Reply all
Reply to author
Forward
0 new messages