connectedAndroidTest失败并显示“没有连接设备”但是仪器工作

时间:2017-07-26 14:41:20

标签: android android-emulator android-instrumentation

我正在为我的Android应用程序设置一个Jenkins节点(在Mac OS X上)运行检测测试。

我的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没有检测到正在运行的模拟器。

我已经半装了一个shell脚本来安装APK并运行am instrument,但后者不会生成与JUnit兼容的输出。

所以在做额外的工作之前,我想知道如何“修复”Gradle任务以便它检测到模拟器。 我也很乐意获得进一步查明问题的建议,例如:找出Gradle任务在我的机器上工作的原因。

2 个答案:

答案 0 :(得分:0)

首先清理您的项目,然后重新创建一个Android模拟器,执行cmd commond adb start-service。如果再次失败,您应该在市场中使用其他模拟器。

答案 1 :(得分:0)

我面临同样的问题。 到目前为止有任何暗示吗?在我以前的蚂蚁脚本中,为了确保adb连接到设备,我们曾经这样做:

%ANDROID_SDK%-current\platform-tools\adb.exe devices
%ANDROID_SDK%-current\platform-tools\adb.exe root
%ANDROID_SDK%-current\platform-tools\adb.exe devices
%ANDROID_SDK%-current\platform-tools\adb.exe wait-for-device

这样我们确保设备在测试时可用。