【发布时间】:2018-01-01 23:14:49
【问题描述】:
我正在设置一个 Jenkins 节点(在 Mac OS X 上)为我的 Android 应用程序运行仪器测试。
我的 Jenkins 项目启动了一个 Android 模拟器并运行 Gradle 任务 :app:connectedAndroidTest。但是任务一直不稳定,有时可以正常运行测试,但大多数时候失败并出现以下错误:
:app:connectedAndroidTest FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:connectedAndroidTest'.
> com.android.builder.testing.api.DeviceException: No connected devices!
经过一番调查,我发现:
- 该问题仅出现在该机器上;在我的机器(另一台 Mac OS X)上,该任务在 Android Studio 内外始终按预期工作;
- 问题发生在 Jenkins 外部,即通过手动启动模拟器并从命令行运行 Gradle 任务;
- 即使 Jenkins 输出警告使用非标准端口,即使使用更常用的 5554-5555 也会出现此问题;
-
adb devices表示模拟器处于在线状态; -
adb shell am instrument也可以;
因此我可以说问题在于:app:connectedAndroidTest 没有检测到正在运行的模拟器。
我已经完成了一个安装 APK 并运行 am instrument 的 shell 脚本,但后者不会产生与 JUnit 兼容的输出。
所以在做其他工作之前,我想知道如何“修复”该 Gradle 任务,以便它检测到模拟器。 我也很高兴获得进一步查明问题的建议,例如找出 Gradle 任务在我的机器上运行的原因。
【问题讨论】:
标签: android android-emulator android-instrumentation