public class AndroidMockTest extends TestCase{
public void testMockInterface(){
ITest test = AndroidMock.createMock(ITest.class);
test.getString((String) AndroidMock.anyObject(),
AndroidMock.anyInt());
AndroidMock.expectLastCall().andReturn("test").times(2);
AndroidMock.replay(test);
String result =test.getString("", 0);
assertEquals( "test",result);
result =test.getString("1", 0);
assertEquals( "test",result);
AndroidMock.verify(test);
}
@UsesMocks(MyClass.class)
public void testPrint() {
MyClass myMockObject =
AndroidMock.createMock(MyClass.class);
myMockObject.print(5);
AndroidMock.replay(myMockObject);
myMockObject.print(5);
AndroidMock.verify(myMockObject);
}
}
public class MyClass {
public void print(int arg) {
System.out.println(arg);
}
}
Then,the interface is pass.But the test-class method has throw error.
java.lang.RuntimeException: Could not find mock for
android.core.MyClass -- 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
android.project.test.AndroidMockTest.testPrint(AndroidMockTest.java:
32)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown
Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown
Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at junit.framework.TestCase.runTest(TestCase.java:168)
at junit.framework.TestCase.runBare(TestCase.java:134)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:
128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:124)
at junit.framework.TestSuite.runTest(TestSuite.java:243)
at junit.framework.TestSuite.run(TestSuite.java:238)
at
org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:
83)
at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestRe
ference.java:
50)
at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:
38)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestR
unner.java:
467)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestR
unner.java:
683)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner .java:
390)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunne
r.java:
197)
Caused by: java.lang.ClassNotFoundException:
genmocks.android.core.MyClassDelegateInterface
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at
com.google.android.testing.mocking.AndroidMock.getInterfaceFor(AndroidMock.
java:
2788)
... 22 more
i just refer to the pdf and add ANDROID_FRAMEWORK_MOCKS jar in
factroy
path.then when i mock class from android project.it should be throw
this error.
thanks in advance