从命令行运行android单元测试?

fol*_*one 15 shell android unit-testing

我正在尝试按照教程在Android平台上运行单元测试.比方说,我想运行电子邮件应用程序的测试.我打开/apps/Email/tests/AndroidManifest.xml文件,查找<manifest>元素,然后查看package属性,com.android.email.tests<instrumentation>元素中我查看android:name属性,即android.test.InstrumentationTestRunner.现在我打开控制台,然后运行

$ . build/envsetup.sh
$ lunch 1
$ adb shell am instrument -w com.android.email.tests/android.test.InstrumentationTestRunner
Run Code Online (Sandbox Code Playgroud)

但那失败了:

INSTRUMENTATION_STATUS: id=ActivityManagerService
android.util.AndroidException: INSTRUMENTATION_FAILED: com.android.email.tests/android.test.InstrumentationTestRunner
INSTRUMENTATION_STATUS: Error=Unable to find instrumentation info for: ComponentInfo{com.android.email.tests/android.test.InstrumentationTestRunner}
Run Code Online (Sandbox Code Playgroud)

那么..我做错了什么?

mar*_*def 9

请运行python development/testrunner/runtest.py电子邮件

然后你会看到它的工作原理:).

基本上你没有安装com.android.email.tests包.

您可以看到可用于仪器的内容

pm list instrumentation
Run Code Online (Sandbox Code Playgroud)

你应该看到

instrumentation:com.android.email.tests/android.test.InstrumentationTestRunner(target = com.android.email)

做的时候

pm list packages
Run Code Online (Sandbox Code Playgroud)

包:com.android.email

包:com.android.email.tests

  • Android不使用Python.应该是'adb shell pm list instrumentation` (4认同)