Mat*_*ias 8 testing build-automation instrumentation android emulation
我们目前正在开发一个在我们的构建服务器上运行的检测测试套件,但是当测试使用普通的Android模拟器传递开发机器时,构建服务器上的构建失败,因为我们只运行带有-no-window
标志的无头模拟器.
尝试调用InstrumentationTestCase.sendKeys()
方法以编程方式打开选项菜单时发生故障.错误是:
权限被拒绝:从pid 646 uid 10026注入关键事件到uid 1000拥有的窗口{43d55100 paused = false}
然后我们发现有一个INJECT_EVENTS
权限,但在清单中设置它没有任何效果.实际上在日志中我们看到了这个输出:
不授予android.permission.INJECT_EVENTS权限以包com.qype.radar(protectionLevel = 2 flags = 0x6644)
这是否意味着此权限无用?
我们还尝试让测试测试应用程序和被测试的应用程序共享相同的Linux用户ID android:sharedUserId
并在同一个进程中运行(android:process
- 我们不确定是否已经是这种情况),但仍然没有运气.
这是否意味着目前无法在无头模拟器上运行包含关键事件的仪器,或者我们是否遗漏了某些内容?
Chr*_*Orr 17
我-no-window
通过首先运行Xvnc实例(即伪X服务器)然后启动模拟器,在没有无头机器的情况下运行模拟器DISPLAY
.
更准确地说,我得到了Xvnc和Android Emulator Jenkins插件来为我做这个.
不幸的是,在注入UI事件之前解锁屏幕仍然是一个问题,但这是通过自动运行这样的命令(hackily)来解决的(类似于你见过的其他答案):
echo "event send EV_KEY:KEY_MENU:1 EV_KEY:KEY_MENU:0" | nc -q1 localhost 5554
编辑:
我发现这种方法更可靠:
adb shell input keyevent 82
小智 1
我在 Hudson 服务器上进行测试时遇到了类似的问题。就我而言,我通过Android SDK的建议解决了问题: http://developer.android.com/guide/topics/testing/testing_android.html#UITestTroubleshooting
重要的是我也必须为主应用程序启用权限。
归档时间: |
|
查看次数: |
7630 次 |
最近记录: |