启动测试用例的一种方法是,
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意图?
提前感谢您的帮助: - )
答案 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测试框架,或者只在模拟器上进行测试并使用在视图层次结构之上运行的东西,因为尝试你当前的东西是一个死胡同