Prueba de prueba de Espresso en CircleCI

Estoy tratando de ejecutar pruebas de instrumentación de proyectos de Android en CircleCI. Se ejecutan bien en una máquina local, tanto de Android Studio y la línea de comandos. La ejecución de CircleCI genera este stacktrace para cada prueba:

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) 

¿Alguna sugerencia? Aquí están las partes relevantes de 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 

He contactado con el apoyo de CircleCI y les he pedido gentilmente que creen un proyecto de ejemplo con pruebas de espresso.

Así que aquí está .

Me ayudó. Espero que te ayude también.

  • Gradle: añadir dependencia para un sabor específico de la biblioteca
  • Compartir recursos entre pruebas unitarias y pruebas de instrumentación en Android
  • Gradle omite la tarea X ya que no tiene archivos de origen
  • ¿Gradle escala de rendimiento bien con el número de núcleos de la CPU
  • ¿Cómo fijar el applicationId diferente para cada combinación del sabor usando flavorDimensions?
  • ¿Por qué Gradle sólo incluye clases de mi biblioteca con la dependencia del proyecto
  • Auto incremento de código de versión sólo en versiones
  • Android Studio .2.2 y el paquete Gradle no existe
  • Ejecutar zipalign con la recompresión zopfli después de construir APK desde la línea de comandos para hacerlo más pequeño
  • Gradle no puede eliminar directorio debido a .fuse_hidden
  • Cómo importar RecyclerView para Android L-preview
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.