如何使用Android Intent以编程方式启动Instrumentation项目?

时间:2013-01-15 13:50:50

标签: android android-intent android-activity robotium instrumentation

启动测试用例的一种方法是,

adb shell am instrument 
  -w com.google.vishal.test/android.test.InstrumentationTestRunner 

我想使用Android代码(有意图)

开始

例如,

adb shell am start -n com.google.android.contacts/.ContactsActivity

我们可以通过以下方法使用Android意图运行: -

Intent intent = new Intent(com.google.android.contacts, ContactsActivity.class);
startActivity(intent);

但是,如何运行

adb shell am instrument 
  -w com.google.vishal.test/android.test.InstrumentationTestRunner 

通过Android意图?

提前感谢您的帮助: - )

2 个答案:

答案 0 :(得分:15)

adb shell 启动检测的命令: -

adb shell am instrument -w com.android.vishal.project.test/android.test.InstrumentationTestRunner   

Android代码从 Android活动启动检测: -

 startInstrumentation(new ComponentName("com.android.vishal.project.test", "android.test.InstrumentationTestRunner"), null, null);

注意:

其他方法,

用于启动检测的Android代码(Android 2.3到Android 4.1.2)

String str_cmd = "adb shell am instrument -w com.android.vishal.project.test/android.test.InstrumentationTestRunner";
Runtime.getRuntime().exec(str_cmd);

对于Android 4.2,它需要权限“android.permission.INJECT_EVENTS”&这只是系统应用程序允许的。由于某些安全原因,用户应用程序无法使用此权限。

所以你不能使用Runtime.getRuntime()。exec(str_cmd);对于Android 4.2以上......

所以现在的工作方法是:

 startInstrumentation(new ComponentName("com.android.vishal.project.test", "android.test.InstrumentationTestRunner"), null, null);

从您的活动中执行此命令。

感谢。

答案 1 :(得分:2)

这实际上是不可能做到的,原因是要通过ADB运行你需要的仪器,adb因安全性而具有某些特殊权限,因此无法在手机上运行(与任何开源软件一样,它当然是可能的,但你必须重写一些Android,然后它只能在你安装的手机上工作!)。

我可以问你这样做的原因吗?如果你真的需要跨应用程序进行自动化,你可以选择使用新的android ui测试框架,或者只在模拟器上进行测试并使用在视图层次结构之上运行的东西,因为尝试你当前的东西是一个死胡同