La prueba de espresso falla después de un clic y bloqueo exitosos durante 60 segundos

Intenté usar el marco de prueba Espresso y escribí una prueba simple.

No hay nada lujoso allí, solo este código:

onView(withId(R.id.login_button_stub)).perform(click());

La prueba funciona bien en un dispositivo Nexus 5 y Genymotion con Android 5.0, pero falla en Android Emulator 4.x, 5.0, Genymotion 2.3, 4.xy LG G2 con Android 4.x.

En todos estos dispositivos / emuladores / simuladores, se hace clic en el botón y se ejecuta su acción (ir a otra pantalla en mi caso). El problema es que bloqueaperform en algunos dispositivos Esto termina con una buena excepción después de 60 segundos:

android.support.test.espresso.PerformException: Error performing 'single click' on view 'with id: com.vielengames.mock:id/login_button_stub'.
    ...
    Caused by: android.support.test.espresso.AppNotIdleException: Looped for 3544 iterations over 60 SECONDS. The following Idle Conditions failed .
    ...

Tenga en cuenta que no hay información sobre qué condiciones fallaron. Mirando el código fuente de Espresso, debería haber una lista de problemas separados por comas.

Aquí está el código completo:TestCase.java.

y stacktrace completo:

I/TestRunner﹕ android.support.test.espresso.PerformException: Error performing 'single click' on view 'with id: com.vielengames.mock:id/login_button_stub'.
        at android.support.test.espresso.PerformException$Builder.build(PerformException.java:83)
        at android.support.test.espresso.base.DefaultFailureHandler.getUserFriendlyError(DefaultFailureHandler.java:70)
        at android.support.test.espresso.base.DefaultFailureHandler.handle(DefaultFailureHandler.java:53)
        at android.support.test.espresso.ViewInteraction.runSynchronouslyOnUiThread(ViewInteraction.java:185)
        at android.support.test.espresso.ViewInteraction.doPerform(ViewInteraction.java:115)
        at android.support.test.espresso.ViewInteraction.perform(ViewInteraction.java:87)
        at com.vielengames.ui.NotLoggedOnTestCase.testLoggedOnAfterLoginClick(NotLoggedOnTestCase.java:19)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:214)
        at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:199)
        at android.test.ActivityInstrumentationTestCase2.runTest(ActivityInstrumentationTestCase2.java:192)
        at junit.framework.TestCase.runBare(TestCase.java:134)
        at junit.framework.TestResult$1.protect(TestResult.java:115)
        at junit.framework.TestResult.runProtected(TestResult.java:133)
        at android.support.test.internal.runner.junit3.DelegatingTestResult.runProtected(DelegatingTestResult.java:90)
        at junit.framework.TestResult.run(TestResult.java:118)
        at android.support.test.internal.runner.junit3.AndroidTestResult.run(AndroidTestResult.java:49)
        at junit.framework.TestCase.run(TestCase.java:124)
        at android.support.test.internal.runner.junit3.NonLeakyTestSuite$NonLeakyTest.run(NonLeakyTestSuite.java:63)
        at junit.framework.TestSuite.runTest(TestSuite.java:243)
        at junit.framework.TestSuite.run(TestSuite.java:238)
        at android.support.test.internal.runner.junit3.DelegatingTestSuite.run(DelegatingTestSuite.java:103)
        at android.support.test.internal.runner.junit3.AndroidTestSuite.run(AndroidTestSuite.java:63)
        at android.support.test.internal.runner.junit3.JUnit38ClassRunner.run(JUnit38ClassRunner.java:90)
        at org.junit.runners.Suite.runChild(Suite.java:128)
        at org.junit.runners.Suite.runChild(Suite.java:24)
        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
        at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
        at org.junit.runner.JUnitCore.run(JUnitCore.java:136)
        at android.support.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:270)
        at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1701)
 Caused by: android.support.test.espresso.AppNotIdleException: Looped for 3544 iterations over 60 SECONDS. The following Idle Conditions failed .
        at android.support.test.espresso.IdlingPolicy.handleTimeout(IdlingPolicy.java:61)
        at android.support.test.espresso.base.UiControllerImpl.loopUntil(UiControllerImpl.java:471)
        at android.support.test.espresso.base.UiControllerImpl.loopUntil(UiControllerImpl.java:402)
        at android.support.test.espresso.base.UiControllerImpl.injectMotionEvent(UiControllerImpl.java:226)
        at android.support.test.espresso.action.MotionEvents.sendUp(MotionEvents.java:135)
        at android.support.test.espresso.action.MotionEvents.sendUp(MotionEvents.java:118)
        at android.support.test.espresso.action.Tap.sendSingleTap(Tap.java:135)
        at android.support.test.espresso.action.Tap.access$100(Tap.java:35)
        at android.support.test.espresso.action.Tap$1.sendTap(Tap.java:40)
        at android.support.test.espresso.action.GeneralClickAction.perform(GeneralClickAction.java:98)
        at android.support.test.espresso.ViewInteraction$1.run(ViewInteraction

Respuestas a la pregunta(1)

Su respuesta a la pregunta