Please help me with the error Could not find mock for ~~~

418 views
Skip to first unread message

Yusuke

unread,
Jun 15, 2012, 7:39:44 AM6/15/12
to androi...@googlegroups.com
Hello,

I'm trying to use Android Mock in my projects.
I finished eclipse settings, following pdf instruction on Android Mock.
However, I get some error on UsesMockProsessor and when I run the test case.

Even i added ANDROID_FRAMEWORK_MOCKS and paths to library into Factory Path, following below posts,Same error occurs.

Peculiar things are that
- when i mock my own classes in tested projects, error don't happen
- when i mock classes in libraries used in tested class or classes in android sdk, error occurs.

Seeing log, class path are currectly added and forName method in below source shouldn't throw exception.

Can anyone give me an advice??

I post an trace and annotation processor's log.

Thank you.

java.lang.RuntimeException: Could not find mock for com.google.gson.Gson  -- Make sure to run the MockGenerator.jar on your test jar, and to build the Android test APK using the modified jar created by MockGenerator
at com.google.android.testing.mocking.AndroidMock.getInterfaceFor(AndroidMock.java:2790)
at com.google.android.testing.mocking.AndroidMock.createMock(AndroidMock.java:187)
at com.google.android.testing.mocking.AndroidMock.createMock(AndroidMock.java:157)
at org.zecun.android.toget.test.GoalEventNotificationServiceTest.testNotifyToAndroid_WhenNotificationTurnedOn(GoalEventNotificationServiceTest.java:79)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:537)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1551)
Caused by: java.lang.ClassNotFoundException: genmocks.com.google.gson.GsonDelegateInterface
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:217)
at java.lang.Class.forName(Class.java:172)
at com.google.android.testing.mocking.AndroidMock.getInterfaceFor(AndroidMock.java:2788)
... 15 more
Caused by: java.lang.NoClassDefFoundError: genmocks/com/google/gson/GsonDelegateInterface
... 19 more
Caused by: java.lang.ClassNotFoundException: genmocks.com.google.gson.GsonDelegateInterface
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
... 19 more


---------------Annotation Processor's log-------------------

2012/06/15 20:16:35 - NOTE : Start Processing Annotations

2012/06/15 20:16:35 - NOTE : Processing [public void testNotifyToAndroid_WhenNotificationTurnedOn() throws java.lang.Exception]

2012/06/15 20:16:35 - NOTE : Adding Class to Mocking List: android.app.NotificationManager

2012/06/15 20:16:35 - NOTE : Adding Class to Mocking List: com.emorym.android_pusher.Pusher

2012/06/15 20:16:35 - NOTE : Adding Class to Mocking List: com.google.gson.Gson

2012/06/15 20:16:35 - NOTE : Found 3 classes to mock

2012/06/15 20:16:35 - NOTE : Fetching mocks of class: android.app.NotificationManager for GINGERBREAD_NFC

2012/06/15 20:16:35 - ERROR : Could not find android.app.NotificationManager

2012/06/15 20:16:35 - ERROR : java.lang.ClassNotFoundException: v233.genmocks.android.app.NotificationManagerDelegateSubclass

at java.net.URLClassLoader$1.run(URLClassLoader.java:202)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(URLClassLoader.java:190)

at java.lang.ClassLoader.loadClass(ClassLoader.java:306)

at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Class.java:169)

at com.google.android.testing.mocking.AndroidFrameworkMockGenerator.getPrebuiltClassesFor(AndroidFrameworkMockGenerator.java:102)

at com.google.android.testing.mocking.AndroidFrameworkMockGenerator.getMocksForClass(AndroidFrameworkMockGenerator.java:81)

at com.google.android.testing.mocking.AndroidFrameworkMockGenerator.getMocksForClass(AndroidFrameworkMockGenerator.java:76)

at com.google.android.testing.mocking.UsesMocksProcessor.getMocksForClass(UsesMocksProcessor.java:257)

at com.google.android.testing.mocking.UsesMocksProcessor.getClassMocks(UsesMocksProcessor.java:209)

at com.google.android.testing.mocking.UsesMocksProcessor.getMocksFor(UsesMocksProcessor.java:110)

at com.google.android.testing.mocking.UsesMocksProcessor.process(UsesMocksProcessor.java:87)

at org.eclipse.jdt.internal.compiler.apt.dispatch.RoundDispatcher.handleProcessor(RoundDispatcher.java:139)

at org.eclipse.jdt.internal.compiler.apt.dispatch.RoundDispatcher.round(RoundDispatcher.java:121)

at org.eclipse.jdt.internal.compiler.apt.dispatch.BaseAnnotationProcessorManager.processAnnotations(BaseAnnotationProcessorManager.java:159)

at org.eclipse.jdt.internal.apt.pluggable.core.dispatch.IdeAnnotationProcessorManager.processAnnotations(IdeAnnotationProcessorManager.java:134)

at org.eclipse.jdt.internal.compiler.Compiler.processAnnotations(Compiler.java:813)

at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:432)

at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:364)

at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.compile(BatchImageBuilder.java:178)

at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:301)

at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.build(BatchImageBuilder.java:60)

at org.eclipse.jdt.internal.core.builder.JavaBuilder.buildAll(JavaBuilder.java:254)

at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:184)

at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:728)

at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)

at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199)

at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:239)

at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:292)

at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)

at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:295)

at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:256)

at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:394)

at org.eclipse.core.internal.resources.Project$1.run(Project.java:618)

at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2344)

at org.eclipse.core.internal.resources.Project.internalBuild(Project.java:597)

at org.eclipse.core.internal.resources.Project.build(Project.java:114)

at com.android.ide.eclipse.adt.internal.project.ProjectHelper.doFullIncrementalDebugBuild(ProjectHelper.java:966)

at com.android.ide.eclipse.adt.internal.launch.LaunchConfigDelegate.launch(LaunchConfigDelegate.java:147)

at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:854)

at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:703)

at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:928)

at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1132)

at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)


2012/06/15 20:16:35 - NOTE : Known Classpath: 

2012/06/15 20:16:35 - NOTE : file:/Users/Yusuke/devlibs/AndroidMock-1.1/android_framework_mocks.jar

2012/06/15 20:16:35 - NOTE : file:/Users/Yusuke/devlibs/AndroidMock-1.1/android_framework_mocks.jar

2012/06/15 20:16:35 - NOTE : file:/Users/Yusuke/devlibs/AndroidMock-1.1/AndroidMockGenerator.jar

2012/06/15 20:16:35 - NOTE : file:/Users/Yusuke/devlibs/android-sdk-mac_x86/platforms/android-10/android.jar

2012/06/15 20:16:35 - NOTE : file:/Users/Yusuke/workspaces/android/Toget/bin/classes/

2012/06/15 20:16:35 - NOTE : file:/Users/Yusuke/devlibs/AndroidMock-1.1/android_framework_mocks/

2012/06/15 20:16:35 - NOTE : file:/Users/Yusuke/workspaces/android/Toget/libs/gson-2.2.1.jar

2012/06/15 20:16:35 - NOTE : file:/Users/Yusuke/workspaces/android/Toget/libs/gson-2.2.1.jar

2012/06/15 20:16:35 - NOTE : Creating mocks of class: com.emorym.android_pusher.Pusher

2012/06/15 20:16:35 - NOTE : Creating mocks of class: com.google.gson.Gson

2012/06/15 20:16:35 - NOTE : Found 2 mocked classes to save

2012/06/15 20:16:35 - NOTE : Saving genmocks.com.emorym.android_pusher.PusherDelegateInterface

2012/06/15 20:16:35 - NOTE : Saving via Eclipse genmocks.com.emorym.android_pusher.PusherDelegateInterface

2012/06/15 20:16:35 - NOTE : Saving genmocks.com.emorym.android_pusher.PusherDelegateSubclass

2012/06/15 20:16:35 - NOTE : Saving via Eclipse genmocks.com.emorym.android_pusher.PusherDelegateSubclass

2012/06/15 20:16:35 - NOTE : Finished Processing Mocks

2012/06/15 20:16:35 - NOTE : Start Processing Annotations

2012/06/15 20:16:35 - NOTE : Processing []

2012/06/15 20:16:35 - NOTE : Found 0 classes to mock

2012/06/15 20:16:35 - NOTE : Found 0 mocked classes to save

2012/06/15 20:16:35 - NOTE : Finished Processing Mocks

Koji Hasegawa

unread,
Jun 16, 2012, 12:59:43 AM6/16/12
to androi...@googlegroups.com
Hi Yusuke,

com.google.gson.Gson is not "Final" class?
Can't create "Final" class mock.

And, Latest Android-Mock version is 1.1.2.
This version can support up to API Level 15.

Regards.


2012/6/15 Yusuke <fwvi...@gmail.com>:

Yusuke

unread,
Jun 16, 2012, 4:11:52 AM6/16/12
to androi...@googlegroups.com
Hi Hasegawa-san,

Thank you for your reply!

As you say, Gson is final class.
I confirmed that I uses the Android-mock 1.1.2.

I tried creating a mock for another class. 
- Added ormlite-android-4.40.jar into factory path.
- and write UsesClasses for OrmLiteSqliteOpenHelper as below
And I got another similar error.

I forgotted to say that i'm using eclipse 3.7.0 and mac lion and create the test project as Android Test Project and added tested project as referenced project.
Is there some points which i should pay attention to on eclipse 3.7.0, 
or is there another possibility of missing something??

Best regards,

@UsesMocks({NotificationManager.class, Pusher.class, OrmLiteSqliteOpenHelper.class})

public void testNotifyToAndroid_WhenNotificationTurnedOn() throws Exception {

OrmLiteSqliteOpenHelper helper = AndroidMock.createMock(OrmLiteSqliteOpenHelper.class, null, null, null, 0);

notificationManager = AndroidMock.createMock(NotificationManager.class);

Pusher pusher = AndroidMock.createMock(Pusher.class, "aaa", "aaa");

}


2012/06/16 17:04:20 - NOTE : Creating mocks of class: com.emorym.android_pusher.Pusher

2012/06/16 17:04:20 - NOTE : Creating mocks of class: com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper

2012/06/16 17:04:20 - ERROR : Could not find com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper

2012/06/16 17:04:20 - ERROR : java.lang.NoClassDefFoundError: com/j256/ormlite/support/ConnectionSource

at java.lang.Class.getDeclaredConstructors0(Native Method)

at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)

at java.lang.Class.getDeclaredConstructors(Class.java:1836)

at com.google.android.testing.mocking.AndroidMockGenerator.containsUsableConstructor(AndroidMockGenerator.java:134)

at com.google.android.testing.mocking.AndroidMockGenerator.classIsSupportedType(AndroidMockGenerator.java:145)

at com.google.android.testing.mocking.AndroidMockGenerator.createMocksForClass(AndroidMockGenerator.java:93)

at com.google.android.testing.mocking.AndroidMockGenerator.createMocksForClass(AndroidMockGenerator.java:88)

at com.google.android.testing.mocking.UsesMocksProcessor.createMocksForClass(UsesMocksProcessor.java:229)

at com.google.android.testing.mocking.UsesMocksProcessor.getClassMocks(UsesMocksProcessor.java:207)

at com.google.android.testing.mocking.UsesMocksProcessor.getMocksFor(UsesMocksProcessor.java:110)

at com.google.android.testing.mocking.UsesMocksProcessor.process(UsesMocksProcessor.java:87)

at org.eclipse.jdt.internal.compiler.apt.dispatch.RoundDispatcher.handleProcessor(RoundDispatcher.java:139)

at org.eclipse.jdt.internal.compiler.apt.dispatch.RoundDispatcher.round(RoundDispatcher.java:121)

at org.eclipse.jdt.internal.compiler.apt.dispatch.BaseAnnotationProcessorManager.processAnnotations(BaseAnnotationProcessorManager.java:159)

at org.eclipse.jdt.internal.apt.pluggable.core.dispatch.IdeAnnotationProcessorManager.processAnnotations(IdeAnnotationProcessorManager.java:134)

at org.eclipse.jdt.internal.compiler.Compiler.processAnnotations(Compiler.java:813)

at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:432)

at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:364)

at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.compile(BatchImageBuilder.java:178)

at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:301)

at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.build(BatchImageBuilder.java:60)

at org.eclipse.jdt.internal.core.builder.JavaBuilder.buildAll(JavaBuilder.java:254)

at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:173)

at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:728)

at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)

at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199)

at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:239)

at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:292)

at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)

at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:295)

at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:256)

at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:394)

at org.eclipse.core.internal.resources.Project$1.run(Project.java:618)

at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2344)

at org.eclipse.core.internal.resources.Project.internalBuild(Project.java:597)

at org.eclipse.core.internal.resources.Project.build(Project.java:114)

at org.eclipse.jdt.internal.ui.util.CoreUtility$BuildJob.run(CoreUtility.java:161)

at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

Caused by: java.lang.ClassNotFoundException: com.j256.ormlite.support.ConnectionSource

at java.net.URLClassLoader$1.run(URLClassLoader.java:202)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(URLClassLoader.java:190)

at java.lang.ClassLoader.loadClass(ClassLoader.java:306)

at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

... 38 more


2012/06/16 17:04:20 - NOTE : Known Classpath: 

2012/06/16 17:04:20 - NOTE : file:/Users/Yusuke/devlibs/AndroidMock-1.1/android_framework_mocks.jar

2012/06/16 17:04:20 - NOTE : file:/Users/Yusuke/devlibs/AndroidMock-1.1/android_framework_mocks.jar

2012/06/16 17:04:20 - NOTE : file:/Users/Yusuke/devlibs/android-sdk-mac_x86/platforms/android-10/android.jar

2012/06/16 17:04:20 - NOTE : file:/Users/Yusuke/workspaces/android/Toget/bin/classes/

2012/06/16 17:04:20 - NOTE : file:/Users/Yusuke/devlibs/AndroidMock-1.1/android_framework_mocks/

2012/06/16 17:04:20 - NOTE : file:/Users/Yusuke/workspaces/android/Toget/libs/gson-2.2.1.jar

2012/06/16 17:04:20 - NOTE : file:/Users/Yusuke/devlibs/AndroidMock-1.1/AndroidMockGenerator.jar

2012/06/16 17:04:20 - NOTE : file:/Users/Yusuke/workspaces/android/Toget/libs/ormlite-android-4.40.jar

2012/06/16 17:04:20 - NOTE : Found 2 mocked classes to save

2012/06/16 17:04:20 - NOTE : Saving genmocks.com.emorym.android_pusher.PusherDelegateInterface

2012/06/16 17:04:20 - NOTE : Saving via Eclipse genmocks.com.emorym.android_pusher.PusherDelegateInterface

2012/06/16 17:04:20 - NOTE : Saving genmocks.com.emorym.android_pusher.PusherDelegateSubclass

2012/06/16 17:04:20 - NOTE : Saving via Eclipse genmocks.com.emorym.android_pusher.PusherDelegateSubclass

2012/06/16 17:04:20 - NOTE : Finished Processing Mocks

2012/06/16 17:04:20 - NOTE : Start Processing Annotations

2012/06/16 17:04:20 - NOTE : Processing []

2012/06/16 17:04:20 - NOTE : Found 0 classes to mock

2012/06/16 17:04:20 - NOTE : Found 0 mocked classes to save

2012/06/16 17:04:20 - NOTE : Finished Processing Mocks


2012年6月16日土曜日 13時59分43秒 UTC+9 Koji Hasegawa:

Yusuke

unread,
Jun 16, 2012, 4:37:21 AM6/16/12
to androi...@googlegroups.com
Sorry. I forgot to post the source of the OrmLiteHelperSqliteOpenHelper for reference.
Reply all
Reply to author
Forward
0 new messages