android - connectedAndroidTest 因 "no connected devices"而失败,但我的仪器可以正常工作

标签 android android-emulator android-instrumentation

我正在设置一个 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模拟器,执行cmd命令 adb start-service 。如果再次失败你应该使用市场上其他的模拟器。

关于android - connectedAndroidTest 因 "no connected devices"而失败,但我的仪器可以正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45330212/

相关文章:

Android ListView setOnItemClickListener 不工作

android - 与 PendingIntent.getBroadcast() 有关的 Intrumented 测试

Android Studio 1.3 RC3。 Google Play 服务已过时。需要 7571000 但找到 6774470

android - 有没有办法在 AndroidTestCase 中打开和关闭连接?

android - Espresso android - IllegalStateException : UiAutomationService android.accessibilityservice.IAccessibilityServiceClient 已经注册

android - 类声明错误, "testbuild"无法解析为类型

java - 未设置 ADT 字段

android - OkHttpClient 与移动运营商问题

android - 当应用程序退出时,在单独的线程中重复任务的方法是什么?

android - 如何等待 webview.post 完成?