我正在为Android设置自动测试。 如果我跑
ant仪器安装测试
并将我的物理设备连接起来,它就像一个魅力:
[echo] Running tests ... [exec] [exec] com.abc.test.MainActivityUnitTest:. [exec] Test results for InstrumentationTestRunner=. [exec] Time: 3.362 [exec] [exec] OK (1 test) [exec] [exec]
如果我在仿真设备上部署它,我会得到以下结果:
[echo] Running tests ... [exec] INSTRUMENTATION_STATUS: id=ActivityManagerService [exec] INSTRUMENTATION_STATUS: Error=Permission Denial: starting instrumentation ComponentInfo{com.abc.test/android.test.InstrumentationTestRunner} from pid=1134, uid=1134 not allowed because package com.abc.test does not have a signature matching the target com.abc [exec] INSTRUMENTATION_STATUS_CODE: -1 [exec] java.lang.SecurityException: Permission Denial: starting instrumentation ComponentInfo{com.abc.test/android.test.InstrumentationTestRunner} from pid=1134, uid=1134 not allowed because package com.abc.test does not have a signature matching the target com.abc [exec] at android.os.Parcel.readException(Parcel.java:1465) [exec] at android.os.Parcel.readException(Parcel.java:1419) [exec] at android.app.ActivityManagerProxy.startInstrumentation(ActivityManagerNative.java:3188) [exec] at com.android.commands.am.Am.runInstrument(Am.java:864) [exec] at com.android.commands.am.Am.onRun(Am.java:282) [exec] at com.android.internal.os.BaseCommand.run(BaseCommand.java:47) [exec] at com.android.commands.am.Am.main(Am.java:76) [exec] at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) [exec] at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:243) [exec] at dalvik.system.NativeStart.main(Native Method)
我正在使用ant构建和Robotium进行测试。 有人有想法吗?
编辑: 我读到签署以前安装的应用程序版本可能存在某种问题。所以我擦除了模拟器并再次部署。这次我得到了:
[echo] Running tests ... [exec] [exec] com.abc.MainActivityUnitTest:INSTRUMENTATION_RESULT: shortMsg=Native crash [exec] INSTRUMENTATION_RESULT: longMsg=Native crash: Segmentation fault [exec] INSTRUMENTATION_CODE: 0
由于anthonymasson建议我检查我的设备配置,SD-Memory设置为0。 现在我得到了以下内容:
[echo] Running tests ... [exec] [exec] com.abc.test.MainActivityUnitTest:INSTRUMENTATION_RESULT: shortMsg=Process crashed. [exec] INSTRUMENTATION_CODE: 0
如果我在ADT中运行测试,它实际上是绿色的。但是在logcat中有以下例外:
java.io.FileNotFoundException:/ sys / devices / system / cpu / cpu0 / cpufreq / cpuinfo_max_freq:open failed:ENOENT(没有这样的文件或目录)
知道这意味着什么吗?谷歌不是很有帮助......
答案 0 :(得分:1)
检查您的RAM / SD分频率。 通常是VM的配置。 您的程序尝试访问不存在的内容。
答案 1 :(得分:1)
[exec] INSTRUMENTATION_STATUS: Error=Permission Denial: starting instrumentation ComponentInfo{com.graphmasters.nunav.test/android.test.InstrumentationTestRunner} from pid=1134, uid=1134 not allowed because package com.graphmasters.nunav.test does not have a signature matching the target com.graphmasters.nunav
[exec] INSTRUMENTATION_STATUS_CODE: -1
[exec] java.lang.SecurityException: Permission Denial: starting instrumentation ComponentInfo{com.graphmasters.nunav.test/android.test.InstrumentationTestRunner} from pid=1134, uid=1134 not allowed because package com.graphmasters.nunav.test does not have a signature matching the target com.graphmasters.nunav
检查 com.abc 和 com.abc.test 这两个签名
答案 2 :(得分:1)
到目前为止,答案中几乎描述了我的完整旅程。
但是我棺材里的最后一颗钉子是: 测试是绿色的,因为它们在错误发生之前运行。 该错误与我的应用程序试图读取模拟器上没有的硬件信息有关。
有人建议试用Genymotion。 我还没有调查过,但如果有人遇到同样的问题,他可能会对此感到满意。
我会在有更多输入后立即更新。