如何从Android代码启动“uiautomator test run”?

时间:2013-08-13 06:40:49

标签: android shell ui-automation robotium uiautomator

参考链接:Link1Robotium Link2

我们知道从Robotium Link2开始,我们可以从android代码运行robotium测试运行。

现在让我们谈谈uiautomator

我已经从Link1

手动完成了以下步骤
adb push bin/AutomatedTests.jar /data/local/tmp/

问题:如何从“Android活动代码”中运行以下行:

adb shell uiautomator runtest /data/local/tmp/AutomatedTests.jar -c com.example.tests.SimpleTest

案例1:

我尝试了这段代码:Code Link,参数如下:

String[] strCmdArgsUiTesting = 
"/system/bin/uiautomator runtest UiTestingExample.jar -c com.intel.vishal.uitestingexample.LaunchBasemarkES2Taiji".split(" ");

错误来了:

INSTRUMENTATION_RESULT: longMsg=Permission Denial: 
Do not have permission in call getContentProviderExternal() 
from pid=2691, uid=10082 
requires android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY

我将此权限添加到AndroidManifest.xml中,如下所示

<uses-permission android:name="android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY"/>

但同样的错误又来了。此权限在Android活动中无效...

如何解决此错误?

请注意: - 我使用的是Android 4.2.2

2 个答案:

答案 0 :(得分:3)

我相信您的手机需要 rooted 才能从应用的Java代码中调用任何控制台命令......

答案 1 :(得分:2)

检查此链接以了解如何从Android代码运行命令:Android run bash command in app

现在,您要执行

uiautomator runtest /data/local/tmp/AutomatedTests.jar -c com.example.tests.SimpleTest

而不是

adb shell uiautomator runtest /data/local/tmp/AutomatedTests.jar -c com.example.tests.SimpleTest