Issue 329 in mockito: org.mockito.exceptions.base.MockitoException: Mockito cannot mock this class: class org.apache.commons.net.ftp.FTPSClient$$EnhancerByMockitoWithCGLIB$$9780074c Mockito can only mock visible & non-final classes.

1,056 views
Skip to first unread message

moc...@googlecode.com

unread,
Mar 20, 2012, 4:00:37 PM3/20/12
to mocki...@googlegroups.com
Status: New
Owner: ----
Labels: Type-Defect Priority-Medium

New issue 329 by venkyn...@gmail.com:
org.mockito.exceptions.base.MockitoException: Mockito cannot mock this
class: class
org.apache.commons.net.ftp.FTPSClient$$EnhancerByMockitoWithCGLIB$$9780074c
Mockito can only mock visible & non-final classes.
http://code.google.com/p/mockito/issues/detail?id=329

What steps will reproduce the problem?
1. mockFtpsClient = mock(org.apache.commons.net.ftp.FTPSClient.class)
2. Mockito.doThrow(new RuntimeException("sftp
error")).when(mockFtpsClient).connect(Matchers.<InetAddress>anyObject(),Matchers.<Integer>anyObject());

What is the expected output? What do you see instead?
RuntimeException with msg "sftp error"

What version of the product are you using? On what operating system?
Mac OS 10.6.8

Please provide any additional information below.

org.mockito.exceptions.base.MockitoException:
Mockito cannot mock this class: class
org.apache.commons.net.ftp.FTPSClient$$EnhancerByMockitoWithCGLIB$$6ae4f533
Mockito can only mock visible & non-final classes.
If you're not sure why you're getting this error, please report to the
mailing list.
at
com.rackspace.cloud.billing.nova.ftps.FTPSClientImplTest.setup(FTPSClientImplTest.java:37)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at
org.junit.internal.runners.MethodRoadie.runBefores(MethodRoadie.java:129)
at
org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:93)
at
org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.executeTest(PowerMockJUnit44RunnerDelegateImpl.java:296)
at
org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runBeforesThenTestThenAfters(PowerMockJUnit44RunnerDelegateImpl.java:284)
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:209)
at
org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.runMethods(PowerMockJUnit44RunnerDelegateImpl.java:148)
at
org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$1.run(PowerMockJUnit44RunnerDelegateImpl.java:122)
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:120)
at
org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.run(JUnit4TestSuiteChunkerImpl.java:102)
at
org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.run(AbstractCommonPowerMockRunner.java:53)
at
org.powermock.modules.junit4.PowerMockRunner.run(PowerMockRunner.java:42)
at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
at
com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:71)
at
com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:199)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:62)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Caused by: org.mockito.cglib.core.CodeGenerationException:
java.lang.reflect.InvocationTargetException-->null
at
org.mockito.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:238)
at org.mockito.cglib.proxy.Enhancer.createHelper(Enhancer.java:378)
at org.mockito.cglib.proxy.Enhancer.createClass(Enhancer.java:318)
at
org.mockito.internal.creation.jmock.ClassImposterizer.createProxyClass(ClassImposterizer.java:93)
at
org.mockito.internal.creation.jmock.ClassImposterizer.imposterise(ClassImposterizer.java:50)
at org.mockito.internal.util.MockUtil.createMock(MockUtil.java:52)
at org.mockito.internal.MockitoCore.mock(MockitoCore.java:41)
at org.mockito.Mockito.spy(Mockito.java:1092)
... 29 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at org.mockito.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:385)
at
org.mockito.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:220)
... 36 more
Caused by: java.lang.ClassFormatError: Duplicate method name&signature in
class file
org/apache/commons/net/ftp/FTPSClient$$EnhancerByMockitoWithCGLIB$$6ae4f533$$EnhancerByMockitoWithCGLIB$$fbfa4e90
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
... 42 more


org.mockito.exceptions.base.MockitoException:
Mockito cannot mock this class: class
org.apache.commons.net.ftp.FTPSClient$$EnhancerByMockitoWithCGLIB$$6ae4f533
Mockito can only mock visible & non-final classes.
If you're not sure why you're getting this error, please report to the
mailing list.
at
com.rackspace.cloud.billing.nova.ftps.FTPSClientImplTest.setup(FTPSClientImplTest.java:37)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at
org.junit.internal.runners.MethodRoadie.runBefores(MethodRoadie.java:129)
at
org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:93)
at
org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.executeTest(PowerMockJUnit44RunnerDelegateImpl.java:296)
at
org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runBeforesThenTestThenAfters(PowerMockJUnit44RunnerDelegateImpl.java:284)
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:209)
at
org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.runMethods(PowerMockJUnit44RunnerDelegateImpl.java:148)
at
org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$1.run(PowerMockJUnit44RunnerDelegateImpl.java:122)
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:120)
at
org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.run(JUnit4TestSuiteChunkerImpl.java:102)
at
org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.run(AbstractCommonPowerMockRunner.java:53)
at
org.powermock.modules.junit4.PowerMockRunner.run(PowerMockRunner.java:42)
at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
at
com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:71)
at
com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:199)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:62)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Caused by: org.mockito.cglib.core.CodeGenerationException:
java.lang.reflect.InvocationTargetException-->null
at
org.mockito.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:238)
at org.mockito.cglib.proxy.Enhancer.createHelper(Enhancer.java:378)
at org.mockito.cglib.proxy.Enhancer.createClass(Enhancer.java:318)
at
org.mockito.internal.creation.jmock.ClassImposterizer.createProxyClass(ClassImposterizer.java:93)
at
org.mockito.internal.creation.jmock.ClassImposterizer.imposterise(ClassImposterizer.java:50)
at org.mockito.internal.util.MockUtil.createMock(MockUtil.java:52)
at org.mockito.internal.MockitoCore.mock(MockitoCore.java:41)
at org.mockito.Mockito.spy(Mockito.java:1092)
... 29 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at org.mockito.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:385)
at
org.mockito.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:220)
... 36 more
Caused by: java.lang.ClassFormatError: Duplicate method name&signature in
class file
org/apache/commons/net/ftp/FTPSClient$$EnhancerByMockitoWithCGLIB$$6ae4f533$$EnhancerByMockitoWithCGLIB$$fbfa4e90_2
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
... 42 more


moc...@googlecode.com

unread,
Mar 21, 2012, 11:40:35 AM3/21/12
to mocki...@googlegroups.com

Comment #1 on issue 329 by szcze...@gmail.com:
org.mockito.exceptions.base.MockitoException: Mockito cannot mock this
class: class
org.apache.commons.net.ftp.FTPSClient$$EnhancerByMockitoWithCGLIB$$9780074c
Mockito can only mock visible & non-final classes.
http://code.google.com/p/mockito/issues/detail?id=329

Hey,

Looks like some bug with cglib or on the junction between cglib and mockito.

Feel free to contribute a fix :)

moc...@googlecode.com

unread,
Mar 23, 2012, 11:48:21 PM3/23/12
to mocki...@googlegroups.com

Comment #2 on issue 329 by rocketra...@gmail.com:
org.mockito.exceptions.base.MockitoException: Mockito cannot mock this
class: class
org.apache.commons.net.ftp.FTPSClient$$EnhancerByMockitoWithCGLIB$$9780074c
Mockito can only mock visible & non-final classes.
http://code.google.com/p/mockito/issues/detail?id=329

I have the same issue with an interface I am trying to mock. Using JDK7
though -- I wonder if that is the problem.

moc...@googlecode.com

unread,
Mar 24, 2012, 5:27:40 AM3/24/12
to mocki...@googlegroups.com

Comment #3 on issue 329 by brice.du...@gmail.com:
org.mockito.exceptions.base.MockitoException: Mockito cannot mock this
class: class
org.apache.commons.net.ftp.FTPSClient$$EnhancerByMockitoWithCGLIB$$9780074c
Mockito can only mock visible & non-final classes.
http://code.google.com/p/mockito/issues/detail?id=329

@rocketraman Could you make a simple testcase ?

moc...@googlecode.com

unread,
Mar 24, 2012, 9:12:51 PM3/24/12
to mocki...@googlegroups.com

Comment #4 on issue 329 by venkyn...@gmail.com:
org.mockito.exceptions.base.MockitoException: Mockito cannot mock this
class: class
org.apache.commons.net.ftp.FTPSClient$$EnhancerByMockitoWithCGLIB$$9780074c
Mockito can only mock visible & non-final classes.
http://code.google.com/p/mockito/issues/detail?id=329

The issue is resolved. thats a simple mistake from my side.
After I changed from Matchers.<Integer>anyObject to Matchers.anyInt(), the
exception disappeared.

moc...@googlecode.com

unread,
Mar 24, 2012, 9:24:54 PM3/24/12
to mocki...@googlegroups.com

Comment #5 on issue 329 by rocketra...@gmail.com:
org.mockito.exceptions.base.MockitoException: Mockito cannot mock this
class: class
org.apache.commons.net.ftp.FTPSClient$$EnhancerByMockitoWithCGLIB$$9780074c
Mockito can only mock visible & non-final classes.
http://code.google.com/p/mockito/issues/detail?id=329

Unfortunately the issue I am having is not that simple (as far as I can
tell!), but so far I cannot reproduce it in a simple test case.

moc...@googlecode.com

unread,
Mar 25, 2012, 3:57:26 AM3/25/12
to mocki...@googlegroups.com

Comment #6 on issue 329 by brice.du...@gmail.com:
org.mockito.exceptions.base.MockitoException: Mockito cannot mock this
class: class
org.apache.commons.net.ftp.FTPSClient$$EnhancerByMockitoWithCGLIB$$9780074c
Mockito can only mock visible & non-final classes.
http://code.google.com/p/mockito/issues/detail?id=329

@rocketraman When you can reproduce it could you fill a new issue?

@venkynary This might be the junction with Powermock too. As the runner in
PowerMock instantiate the test in their own classloader.

moc...@googlecode.com

unread,
Dec 4, 2013, 10:48:47 AM12/4/13
to mocki...@googlegroups.com
Updates:
Status: Invalid

Comment #7 on issue 329 by brice.du...@gmail.com:
org.mockito.exceptions.base.MockitoException: Mockito cannot mock this
class: class
org.apache.commons.net.ftp.FTPSClient$$EnhancerByMockitoWithCGLIB$$9780074c
Mockito can only mock visible & non-final classes.
http://code.google.com/p/mockito/issues/detail?id=329

Marking this issue as invalid as nobody could actually show a reproducible
code. A new issue shall be created with a proper test will be required if
this issue appears again.

--
You received this message because this project is configured to send all
issue notifications to this address.
You may adjust your notification preferences at:
https://code.google.com/hosting/settings
Reply all
Reply to author
Forward
0 new messages