5

开始测试用例的一种方法是,

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 intent = new Intent(com.google.android.contacts, ContactsActivity.class);
startActivity(intent);

但是,如何运行

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

由 Android 意图?

提前感谢您的帮助:-)

4

2 回答 2

17

adb shell启动检测的命令:-

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

Android Activity开始检测的 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);

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

谢谢。

于 2013-01-17T05:47:53.640 回答
2

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

请问你这样做的原因是什么?如果你真的需要跨应用程序自动化,你更好的选择可能是我们新的 android ui 测试框架,或者只在模拟器上测试并使用在视图层次结构之上运行的东西,因为尝试你目前的状态是死胡同.

于 2013-01-16T07:20:00.783 回答