android - CircleCI 上的 Espresso 测试失败

标签 android gradle android-gradle-plugin circleci

我正在尝试在 CircleCI 上运行 Android 项目仪器测试。它们在本地机器上执行良好,无论是从 Android Studio 还是命令行。 CircleCI 执行为每个测试生成此堆栈跟踪:

java.lang.RuntimeException: Waited for the root of the view hierarchy to have window focus and not be requesting layout for over 10 seconds. If you specified a non default root matcher, it may be picking a root that never takes focus. Otherwise, something is seriously wrong. Selected Root:
Root{application-window-token=android.view.ViewRootImpl$W@677cf28, window-token=android.view.ViewRootImpl$W@677cf28, has-window-focus=false, layout-params-type=1, layout-params-string=WM.LayoutParams{(0,0)(fillxfill) sim=#100 ty=1 fl=#81810100 wanim=0x1030466 surfaceInsets=Rect(0, 0 - 0, 0) needsMenuKey=2}, decor-view-string=DecorView{id=-1, visibility=VISIBLE, width=480, height=800, has-focus=true, has-focusable=true, has-window-focus=false, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0, child-count=2}}
. All Roots:
Root{application-window-token=android.view.ViewRootImpl$W@677cf28, window-token=android.view.ViewRootImpl$W@677cf28, has-window-focus=false, layout-params-type=1, layout-params-string=WM.LayoutParams{(0,0)(fillxfill) sim=#100 ty=1 fl=#81810100 wanim=0x1030466 surfaceInsets=Rect(0, 0 - 0, 0) needsMenuKey=2}, decor-view-string=DecorView{id=-1, visibility=VISIBLE, width=480, height=800, has-focus=true, has-focusable=true, has-window-focus=false, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0, child-count=2}}
at android.support.test.espresso.base.RootViewPicker.get(RootViewPicker.java:99)
at android.support.test.espresso.ViewInteractionModule.provideRootView(ViewInteractionModule.java:69)
at android.support.test.espresso.ViewInteractionModule_ProvideRootViewFactory.get(ViewInteractionModule_ProvideRootViewFactory.java:23)
at android.support.test.espresso.ViewInteractionModule_ProvideRootViewFactory.get(ViewInteractionModule_ProvideRootViewFactory.java:9)
at android.support.test.espresso.base.ViewFinderImpl.getView(ViewFinderImpl.java:68)
at android.support.test.espresso.ViewInteraction$1.run(ViewInteraction.java:120)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5257)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

有什么建议吗? 以下是 circle.yml 的相关部分:

machine:
  environment:
    ANDROID_HOME: /usr/local/android-sdk-linux
    ADB_INSTALL_TIMEOUT: 8

dependencies:
  override:
    - echo y | android update sdk --no-ui --all --filter tools,platform-tools,build-tools-21.1.2,android-22,extra-google-m2repository,extra-google-google_play_services,extra-android-support
    - ANDROID_HOME=/usr/local/android-sdk-linux ./gradlew dependencies

test:
  override:
    - emulator -avd circleci-android22 -no-audio -no-window:
        background: true
        parallel: true
    - circle-android wait-for-boot
    # Build everything first
    - ./gradlew assembleDebugAndroidTest
    # Remove the look screen
    - adb shell input keyevent 82
    - sleep 5
    - ./gradlew connectedAndroidTest
    # copy the build outputs to artifacts
    - cp -r my-project/build/outputs $CIRCLE_ARTIFACTS
    # copy the test results to the test results directory.
    - cp -r my-project/build/outputs/androidTest-results/* $CIRCLE_TEST_REPORTS
    - (./gradlew assemble):
        timeout: 360

最佳答案

我已经联系了 CircleCI 支持人员,请他们创建一个带有 espresso 测试的示例项目。

所以 here it is .

它帮助了我。希望对您也有帮助。

关于android - CircleCI 上的 Espresso 测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33974307/

相关文章:

android - 无法解析符号 'FirebaseAuth'

android - 左侧带箭头的微调器

android - Visual Studio 2015 安装在 Android SDK 设置(API 级别 19 和 21)和级别 22 处挂起

android - Gradle 同步失败 : Could not resolve all artifacts for configuration

android-studio - 更改android程序包后,进程 'command ' 28.0.3\aidl.exe完成,退出值非零1

android - 如何为最终版本 apk 设置我的 gradle

Android 支持库大大增加了 APK 的大小

android - 在 inflated layout 中使用 setText() 到 TextView() 后不显示文本

eclipse - 找出哪些更改的资源导致使用Buildship在Eclipse中刷新/重建工作区

Android:元数据也存在于