关于adb shell的使用
怎样在cmd中执行命令让Android测试工程在Android模拟器或Android手机中自动运行进行android自动化测试呢?
使用adb shell命令
1. 下载了android相关的工具android-sdk-windows并进行了环境变量的配置
2. 将重新签名re-sign过的被测工程安装到Android模拟器或Android手机
3. 将测试工程安装到Android模拟器或Android手机
AndroidManifest.xml文件中的test package名,注:此处是测试工程包,不是被测工程包:com.xqw.apk.test
Android测试工程下的Junit Test Class的路径需要与AndroidManifest.xml文件中保持一致:com.xqw.apk.test
执行某个TestCase: Junit Test Class
adb shell am instrument -w -e class com.xqw.apk.test.Test139Xqwcom.xqw.apk.test/com.neenbedankt.android.test.InstrumentationTestRunner
请注意:com.xqw.apk.test都是测试工程的包名,需要跟第1点中讲到的package name保持一致,否则可能会出现以下两个错误:
错误1:
java.lang.RuntimeException:Could not find testclass. class:com.xqw.apk.test.Test139Xqw
C:\Documents and Settings\Administrator>adb shell am instrument -w -e class com.xqw.apk.test.Test139Xqw com.cplatform.xqw/android.test.InstrumentationTestRunne r INSTRUMENTATION_RESULT: shortMsg=java.lang.RuntimeException INSTRUMENTATION_RESULT: longMsg=java.lang.RuntimeException: Could not find testclass. Class: com.xqw.apk.test.Test139Xqw INSTRUMENTATION_CODE: 0
|
解释:该错误的原因是找不到com.xqw.apk.test.Test139Xqw这个类,之前由于前面的包名不一致,AndroidManifest.xml文件中是com.xqw.apk.test,而工程中是com.apk.xqw.test,所以老是报该错误。
错误2:
INSTRUMENTATION_STATUS:Error=Unable to find instrumentation info for: Component
C:\Documents and Settings\Administrator>adb shell am instrument -w -e class com .xqw.apk.test.Test139Xqw com.xqw.apk.test/android.test.InstrumentationTestRunner
INSTRUMENTATION_STATUS: id=ActivityManagerService INSTRUMENTATION_STATUS: Error=Unable to find instrumentation info for: Component Info{com.xqw.apk.test/android.test.InstrumentationTestRunner} INSTRUMENTATION_STATUS_CODE: -1 android.util.AndroidException: INSTRUMENTATION_FAILED: com.xqw.apk.test/android. test.InstrumentationTestRunner |
解释:该错误的原因可能出在com.xqw.apk.test/com.neenbedankt.android.test.InstrumentationTestRunner 这边:
1) 可能是testpackage测试包名不对com.xqw.apk.test,那么按照上面说的调整就可以了
2)也可能是com.neenbedankt.android.test.InstrumentationTestRunner这个InstrumentationTestRunner调用的不对。默认情况下,android模拟器中的InstrumentationTestRunner是:android.test.InstrumentationTestRunner。
该com.neenbedankt.android.test.InstrumentationTestRunner是由于引用了testutils.jar结合输出junitreporter报告用的,如果不需要输入报告,则直接使用android.test.InstrumentationTestRunner即可。
执行所有的TestCase
adbshell am instrument –w com.xqw.apk.test/com.neenbedankt.android.test.InstrumentationTestRunner
这边可能会报如下错误
C:\Documents and Settings\Administrator>adb shell am instrument -w com.xqw.apk.t est/com.neenbedankt.android.test.InstrumentationTestRunner
com.cplatform.xqw.test.HttpToolsTest:.. Error in testRequestByHttpGet: java.lang.IllegalStateException: Target host must not be null, or set in paramet ers. at org.apache.http.impl.client.DefaultRequestDirector.determineRoute(Def aultRequestDirector.java:561) at org.apache.http.impl.client.DefaultRequestDirector.execute (DefaultReq uestDirector.java:292) at org.apache.http.impl.client.AbstractHttpClient.execute (AbstractHttpCl ient.java:555) at org.apache.http.impl.client.AbstractHttpClient.execute (AbstractHttpCl ient.java:487) at org.apache.http.impl.client.AbstractHttpClient.execute (AbstractHttpCl ient.java:465) at com.cplatform.xqw.test.HttpToolsTest.testRequestByHttpGet (HttpToolsTe st.java:99) 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 (InstrumentationTestRun ner.java:520) at com.neenbedankt.android.test.InstrumentationTestRunner.onStart(Instru mentationTestRunner.java:45) at android.app.Instrumentation$InstrumentationThread.run (Instrumentation .java:1447)
Error in testRequestByHttpPost: java.lang.IllegalStateException: Target host must not be null, or set in paramet ers. |
@echo on adb shell am instrument -w -e class com.xqw.apk.test.Test139Xqw com.xqw.apk.test/com.neenbedankt.android.test.InstrumentationTestRunner echo "测试执行完成....." adb pull /data/data/com.cplatform.xqw/files/TEST-all.xml D:/TestResult echo "将结果输出到PC本地磁盘....." |
adb pull/data/data/com.cplatform.xqw/files/TEST-all.xml D:/TestResult 是将junitreporter测试报告结果从Android模拟器或Android手机中pull到本地PC磁盘D:/TestResult
在Android_Robotium自动化测试中导出JunitTest Result Reporter:http://code.google.com/p/nbandroid-utils/
RunTestsCommand:
http://developer.android.com/tools/testing/testing_otheride.html#RunTestsCommand
InstrumentationTestRunner:
http://developer.android.com/reference/android/test/InstrumentationTestRunner.html