android - My simple test case does not run on Robotium -
i trying test application robotium using extremely simple test case fails. have tried , nothing works. main activity google maps activity. i've tried other activities don't work well. package name correct.
this have tried:
- importing robotium
- checking robotium in order , export
- restart eclipse , clean project
- set debuggable true in manifest file.
here manifest:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.app.neatspots.test" android:versioncode="1" android:versionname="1.0" > <uses-sdk android:minsdkversion="11" android:targetsdkversion="17"/> <uses-permission android:name="android.permission.run_instrumentation" /> <instrumentation android:name="android.test.instrumentationtestrunner" android:targetpackage="com.app.neatspots" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:debuggable="true"> <uses-library android:name="android.test.runner" /> </application> </manifest>
here simple test class:
package android.test; import com.app.neatspots.mainactivity; import com.jayway.android.robotium.solo.solo; import android.test.activityinstrumentationtestcase2; public class mainactivitytest extends activityinstrumentationtestcase2<mainactivity> { private solo solo; public mainactivitytest() { super(mainactivity.class); this.solo = new solo(getinstrumentation(), getactivity()); } protected void setup() throws exception { super.setup(); } public void testclick() { solo.assertcurrentactivity("check on first activity", mainactivity.class); } }
here logcat. put in pastebin because it's ugly here. http://pastebin.com/guvcruhg
04-05 20:54:33.402: w/dalvikvm(19668): class resolved unexpected dex: lcom/app/neatspots/mainactivity;(0x414e7fe0):0x2068c8 ref [lcom/google/android/gms/maps/googlemap$onmaplongclicklistener;] lcom/google/android/gms/maps/googlemap$onmaplongclicklistener;(0x414e7fe0):0x23ac70 04-05 20:54:33.402: w/dalvikvm(19668): (lcom/app/neatspots/mainactivity; had used different lcom/google/android/gms/maps/googlemap$onmaplongclicklistener; during pre-verification) 04-05 20:54:33.402: i/dalvikvm(19668): failed resolving lcom/app/neatspots/mainactivity; interface 818 'lcom/google/android/gms/maps/googlemap$onmaplongclicklistener;' 04-05 20:54:33.402: w/dalvikvm(19668): link of class 'lcom/app/neatspots/mainactivity;' failed 04-05 20:54:33.407: w/classpathpackageinfosource(19668): cannot load class. make sure in apk. class name: 'com.app.neatspots.mainactivity'. message: com.app.neatspots.mainactivity 04-05 20:54:33.407: w/classpathpackageinfosource(19668): java.lang.classnotfoundexception: com.app.neatspots.mainactivity 04-05 20:54:33.407: w/classpathpackageinfosource(19668): @ java.lang.class.classforname(native method) 04-05 20:54:33.407: w/classpathpackageinfosource(19668): @ java.lang.class.forname(class.java:217) 04-05 20:54:33.407: w/classpathpackageinfosource(19668): @ android.test.classpathpackageinfosource.createpackageinfo(classpathpackageinfosource.java:88) 04-05 20:54:33.407: w/classpathpackageinfosource(19668): @ android.test.classpathpackageinfosource.access$000(classpathpackageinfosource.java:39) 04-05 20:54:33.407: w/classpathpackageinfosource(19668): @ android.test.classpathpackageinfosource$1.load(classpathpackageinfosource.java:50) 04-05 20:54:33.407: w/classpathpackageinfosource(19668): @ android.test.classpathpackageinfosource$1.load(classpathpackageinfosource.java:47) 04-05 20:54:33.407: w/classpathpackageinfosource(19668): @ android.test.simplecache.get(simplecache.java:31) 04-05 20:54:33.407: w/classpathpackageinfosource(19668): @ android.test.classpathpackageinfosource.getpackageinfo(classpathpackageinfosource.java:72) 04-05 20:54:33.407: w/classpathpackageinfosource(19668): @ android.test.classpathpackageinfo.getsubpackages(classpathpackageinfo.java:48) 04-05 20:54:33.407: w/classpathpackageinfosource(19668): @ android.test.classpathpackageinfo.addtoplevelclassesto(classpathpackageinfo.java:61) 04-05 20:54:33.407: w/classpathpackageinfosource(19668): @ android.test.classpathpackageinfo.gettoplevelclassesrecursive(classpathpackageinfo.java:55) 04-05 20:54:33.407: w/classpathpackageinfosource(19668): @ android.test.suitebuilder.testgrouping.testcaseclassesinpackage(testgrouping.java:156) 04-05 20:54:33.407: w/classpathpackageinfosource(19668): @ android.test.suitebuilder.testgrouping.addpackagesrecursive(testgrouping.java:117) 04-05 20:54:33.407: w/classpathpackageinfosource(19668): @ android.test.suitebuilder.testsuitebuilder.includepackages(testsuitebuilder.java:102) 04-05 20:54:33.407: w/classpathpackageinfosource(19668): @ android.test.instrumentationtestrunner.oncreate(instrumentationtestrunner.java:358) 04-05 20:54:33.407: w/classpathpackageinfosource(19668): @ android.app.activitythread.handlebindapplication(activitythread.java:3932) 04-05 20:54:33.407: w/classpathpackageinfosource(19668): @ android.app.activitythread.access$1300(activitythread.java:127) 04-05 20:54:33.407: w/classpathpackageinfosource(19668): @ android.app.activitythread$h.handlemessage(activitythread.java:1197) 04-05 20:54:33.407: w/classpathpackageinfosource(19668): @ android.os.handler.dispatchmessage(handler.java:99) 04-05 20:54:33.407: w/classpathpackageinfosource(19668): @ android.os.looper.loop(looper.java:137) 04-05 20:54:33.407: w/classpathpackageinfosource(19668): @ android.app.activitythread.main(activitythread.java:4507) 04-05 20:54:33.407: w/classpathpackageinfosource(19668): @ java.lang.reflect.method.invokenative(native method) 04-05 20:54:33.407: w/classpathpackageinfosource(19668): @ java.lang.reflect.method.invoke(method.java:511) 04-05 20:54:33.407: w/classpathpackageinfosource(19668): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:790) 04-05 20:54:33.407: w/classpathpackageinfosource(19668): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:557) 04-05 20:54:33.407: w/classpathpackageinfosource(19668): @ dalvik.system.nativestart.main(native method) 04-05 20:54:33.407: w/classpathpackageinfosource(19668): caused by: java.lang.noclassdeffounderror: com/app/neatspots/mainactivity 04-05 20:54:33.407: w/classpathpackageinfosource(19668): ... 26 more 04-05 20:54:33.407: w/classpathpackageinfosource(19668): caused by: java.lang.illegalaccesserror: class ref in pre-verified class resolved unexpected implementation 04-05 20:54:33.407: w/classpathpackageinfosource(19668): @ dalvik.system.dexfile.defineclass(native method) 04-05 20:54:33.407: w/classpathpackageinfosource(19668): @ dalvik.system.dexfile.loadclassbinaryname(dexfile.java:195) 04-05 20:54:33.407: w/classpathpackageinfosource(19668): @ dalvik.system.dexpathlist.findclass(dexpathlist.java:315) 04-05 20:54:33.407: w/classpathpackageinfosource(19668): @ dalvik.system.basedexclassloader.findclass(basedexclassloader.java:58) 04-05 20:54:33.407: w/classpathpackageinfosource(19668): @ java.lang.classloader.loadclass(classloader.java:501) 04-05 20:54:33.407: w/classpathpackageinfosource(19668): @ java.lang.classloader.loadclass(classloader.java:461) 04-05 20:54:33.407: w/classpathpackageinfosource(19668): ... 26 more 04-05 20:54:33.442: d/dalvikvm(19668): gc_concurrent freed 498k, 7% free 9028k/9607k, paused 2ms+2ms 04-05 20:54:33.492: d/dalvikvm(1988): gc_concurrent freed 1602k, 35% free 25226k/38279k, paused 3ms+8ms 04-05 20:54:33.502: e/datarouter(1828): usb connection true 04-05 20:54:33.502: e/datarouter(1828): dsr on. don't send dtr on. 04-05 20:54:33.502: d/dalvikvm(19668): gc_concurrent freed 487k, 6% free 9052k/9607k, paused 1ms+2ms 04-05 20:54:33.592: d/dalvikvm(19668): gc_concurrent freed 537k, 6% free 9146k/9671k, paused 2ms+8ms 04-05 20:54:33.662: d/dalvikvm(19668): gc_concurrent freed 614k, 7% free 9066k/9735k, paused 2ms+2ms 04-05 20:54:33.692: i/fmradioservice(1988): *** mreceiver: volume_changed_action 04-05 20:54:33.692: i/fmradioservice(1988): stream: 3 04-05 20:54:33.692: i/fmradioservice(1988): volume: 15 04-05 20:54:33.692: i/fmradioservice(1988): *** mreceiver: volume_changed_action 04-05 20:54:33.692: i/fmradioservice(1988): stream: 9 04-05 20:54:33.692: i/fmradioservice(1988): volume: 15 04-05 20:54:33.692: i/fmradioservice(1988): *** mreceiver: volume_changed_action 04-05 20:54:33.692: i/fmradioservice(1988): stream: 10 04-05 20:54:33.692: i/fmradioservice(1988): volume: 0 04-05 20:54:33.692: i/fmradiocontroller(1988): jni player_setvolume :0 04-05 20:54:33.692: i/fmradiocontroller(1988): ---jni player_setvolume--- 04-05 20:54:33.692: i/fmradiocontroller(1988): jni player_muteon 04-05 20:54:33.692: i/fmradiocontroller(1988): jni player_muteon 04-05 20:54:33.722: d/dalvikvm(19668): gc_concurrent freed 493k, 7% free 9085k/9735k, paused 1ms+2ms 04-05 20:54:33.787: d/dalvikvm(19668): gc_concurrent freed 530k, 7% free 9066k/9735k, paused 1ms+2ms 04-05 20:54:33.842: d/dalvikvm(19668): gc_concurrent freed 510k, 7% free 9068k/9735k, paused 1ms+2ms 04-05 20:54:33.852: i/testsuitebuilder(19668): failed create test. 04-05 20:54:33.852: i/testsuitebuilder(19668): java.lang.reflect.invocationtargetexception 04-05 20:54:33.852: i/testsuitebuilder(19668): @ java.lang.reflect.constructor.constructnative(native method) 04-05 20:54:33.852: i/testsuitebuilder(19668): @ java.lang.reflect.constructor.newinstance(constructor.java:417) 04-05 20:54:33.852: i/testsuitebuilder(19668): @ android.test.suitebuilder.testmethod.instantiatetest(testmethod.java:87) 04-05 20:54:33.852: i/testsuitebuilder(19668): @ android.test.suitebuilder.testmethod.createtest(testmethod.java:73) 04-05 20:54:33.852: i/testsuitebuilder(19668): @ android.test.suitebuilder.testsuitebuilder.addtest(testsuitebuilder.java:262) 04-05 20:54:33.852: i/testsuitebuilder(19668): @ android.test.suitebuilder.testsuitebuilder.build(testsuitebuilder.java:184) 04-05 20:54:33.852: i/testsuitebuilder(19668): @ android.test.instrumentationtestrunner.oncreate(instrumentationtestrunner.java:371) 04-05 20:54:33.852: i/testsuitebuilder(19668): @ android.app.activitythread.handlebindapplication(activitythread.java:3932) 04-05 20:54:33.852: i/testsuitebuilder(19668): @ android.app.activitythread.access$1300(activitythread.java:127) 04-05 20:54:33.852: i/testsuitebuilder(19668): @ android.app.activitythread$h.handlemessage(activitythread.java:1197) 04-05 20:54:33.852: i/testsuitebuilder(19668): @ android.os.handler.dispatchmessage(handler.java:99) 04-05 20:54:33.852: i/testsuitebuilder(19668): @ android.os.looper.loop(looper.java:137) 04-05 20:54:33.852: i/testsuitebuilder(19668): @ android.app.activitythread.main(activitythread.java:4507) 04-05 20:54:33.852: i/testsuitebuilder(19668): @ java.lang.reflect.method.invokenative(native method) 04-05 20:54:33.852: i/testsuitebuilder(19668): @ java.lang.reflect.method.invoke(method.java:511) 04-05 20:54:33.852: i/testsuitebuilder(19668): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:790) 04-05 20:54:33.852: i/testsuitebuilder(19668): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:557) 04-05 20:54:33.852: i/testsuitebuilder(19668): @ dalvik.system.nativestart.main(native method) 04-05 20:54:33.852: i/testsuitebuilder(19668): caused by: java.lang.nullpointerexception 04-05 20:54:33.852: i/testsuitebuilder(19668): @ android.test.activityinstrumentationtestcase2.getactivity(activityinstrumentationtestcase2.java:94) 04-05 20:54:33.852: i/testsuitebuilder(19668): @ android.test.listlocationstest.<init>(listlocationstest.java:14) 04-05 20:54:33.852: i/testsuitebuilder(19668): ... 18 more 04-05 20:54:33.852: i/testrunner(19668): started: testsuiteconstructionfailed(android.test.suitebuilder.testsuitebuilder$failedtocreatetests) 04-05 20:54:33.872: i/testrunner(19668): finished: testsuiteconstructionfailed(android.test.suitebuilder.testsuitebuilder$failedtocreatetests) 04-05 20:54:33.872: i/testrunner(19668): passed: testsuiteconstructionfailed(android.test.suitebuilder.testsuitebuilder$failedtocreatetests) 04-05 20:54:33.887: d/androidruntime(19644): shutting down vm 04-05 20:54:33.887: i/activitymanager(1988): force stopping package com.app.neatspots uid=10139 04-05 20:54:33.887: i/activitymanager(1988): killing proc 19668:com.app.neatspots/10139: force stop
downloaded application. here test i've prepared file. anyway don't have sources, must bit different:
package com.app.neatspots.test; import android.app.activity; import android.test.activityinstrumentationtestcase2; import com.jayway.android.robotium.solo.solo; public class test extends activityinstrumentationtestcase2<activity> { private static final string launcher_activity_classname = "com.app.neatspots.mainactivity"; private static class<?> launchactivityclass; static { try { launchactivityclass = class.forname(launcher_activity_classname); } catch (classnotfoundexception e) { throw new runtimeexception(e); } } private solo solo; @suppresswarnings("unchecked") public test() { super((class<activity>) launchactivityclass); } @override public void setup() throws exception { super.setup(); solo = new solo(getinstrumentation(), getactivity()); } @override public void teardown() throws exception { solo.finishopenedactivities(); super.teardown(); } public void testrecorded() throws exception { solo.waitforactivity("mainactivity"); solo.sleep(5000); } }
it works me: attached project well: http://www.speedyshare.com/hf3hp/myapktest.zip
Comments
Post a Comment