Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


La prueba Espresso falla con NoActivityResumedException a menudo

EDIT: descripción actualizada y mensaje de error y agregó algunas imágenes. Todavía tiene este problema.

Tengo un extraño error que ocurre muchas veces cuando se ejecutan exámenes de espresso. Después de un par de exitosas pruebas, las pruebas empiezan a fallar con la siguiente excepción:

06-23 13:04:48.438 info TestRunner failed: WhenNavigatingToReportsThenCorrectViewShouldBeShown(com.myapp.ui.views.MainActivityTest) 06-23 13:04:48.439 info TestRunner ----- begin exception ----- 06-23 13:04:48.441 info TestRunner android.support.test.espresso.NoActivityResumedException: No activities in stage RESUMED. Did you forget to launch the activity. (test.getActivity() or similar)? 06-23 13:04:48.441 info TestRunner at dalvik.system.VMStack.getThreadStackTrace(Native Method) 06-23 13:04:48.441 info TestRunner at java.lang.Thread.getStackTrace(Thread.java:580) 06-23 13:04:48.441 info TestRunner at android.support.test.espresso.base.DefaultFailureHandler.getUserFriendlyError(DefaultFailureHandler.java:82) 06-23 13:04:48.441 info TestRunner at android.support.test.espresso.base.DefaultFailureHandler.handle(DefaultFailureHandler.java:53) 06-23 13:04:48.441 info TestRunner at android.support.test.espresso.ViewInteraction.runSynchronouslyOnUiThread(ViewInteraction.java:184) 06-23 13:04:48.441 info TestRunner at android.support.test.espresso.ViewInteraction.doPerform(ViewInteraction.java:115) 06-23 13:04:48.441 info TestRunner at android.support.test.espresso.ViewInteraction.perform(ViewInteraction.java:87) 06-23 13:04:48.441 info TestRunner at com.myapp.ui.views.MainActivityTest.WhenNavigatingToReportsThenCorrectViewShouldBeShown(MainActivityTest.java:96) 06-23 13:04:48.441 info TestRunner at java.lang.reflect.Method.invoke(Native Method) 06-23 13:04:48.441 info TestRunner at java.lang.reflect.Method.invoke(Method.java:372) 06-23 13:04:48.441 info TestRunner at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45) 06-23 13:04:48.441 info TestRunner at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) 06-23 13:04:48.441 info TestRunner at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42) 06-23 13:04:48.441 info TestRunner at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) 06-23 13:04:48.441 info TestRunner at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) 06-23 13:04:48.441 info TestRunner at android.support.test.internal.statement.UiThreadStatement.evaluate(UiThreadStatement.java:55) 06-23 13:04:48.441 info TestRunner at android.support.test.rule.ActivityTestRule$ActivityStatement.evaluate(ActivityTestRule.java:257) 06-23 13:04:48.441 info TestRunner at org.junit.rules.RunRules.evaluate(RunRules.java:18) 06-23 13:04:48.441 info TestRunner at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263) 06-23 13:04:48.441 info TestRunner at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68) 06-23 13:04:48.441 info TestRunner at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47) 06-23 13:04:48.441 info TestRunner at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) 06-23 13:04:48.441 info TestRunner at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) 06-23 13:04:48.441 info TestRunner at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) 06-23 13:04:48.441 info TestRunner at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) 06-23 13:04:48.441 info TestRunner at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) 06-23 13:04:48.441 info TestRunner at org.junit.runners.ParentRunner.run(ParentRunner.java:300) 06-23 13:04:48.441 info TestRunner at org.junit.runners.Suite.runChild(Suite.java:128) 06-23 13:04:48.441 info TestRunner at org.junit.runners.Suite.runChild(Suite.java:24) 06-23 13:04:48.441 info TestRunner at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) 06-23 13:04:48.441 info TestRunner at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) 06-23 13:04:48.441 info TestRunner at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) 06-23 13:04:48.441 info TestRunner at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) 06-23 13:04:48.441 info TestRunner at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) 06-23 13:04:48.441 info TestRunner at org.junit.runners.ParentRunner.run(ParentRunner.java:300) 06-23 13:04:48.441 info TestRunner at org.junit.runner.JUnitCore.run(JUnitCore.java:157) 06-23 13:04:48.441 info TestRunner at org.junit.runner.JUnitCore.run(JUnitCore.java:136) 06-23 13:04:48.441 info TestRunner at android.support.test.internal.runner.TestExecutor.execute(TestExecutor.java:54) 06-23 13:04:48.441 info TestRunner at android.support.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:228) 06-23 13:04:48.441 info TestRunner at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1837) 06-23 13:04:48.441 info TestRunner ----- end exception ----- 06-23 13:04:48.443 info TestRunner finished: WhenNavigatingToReportsThenCorrectViewShouldBeShown(com.myapp.ui.views.MainActivityTest) 

Tengo una aplicación simple con la navegación a las páginas que contienen texto en este momento, y la prueba debe navegar a cada página e identificar este texto.

 @RunWith(AndroidJUnit4.class) @LargeTest public class MainActivityTest { @Rule public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule(MainActivity.class); private MainActivity mainActivity; @Before public void setActivity() { mainActivity = mActivityRule.getActivity(); } @Test public void WhenNavigatingToReportsThenCorrectViewShouldBeShown() { onView(allOf(withId(R.id.icon), hasSibling(withText(R.string.reports)))).perform(click()); onView(withText("This is the Reports Activity.")).check(matches(isDisplayed())); Spoon.screenshot(mainActivity, "main_view"); } } 

Este error sólo se produce en el dispositivo real. En el dispositivo emulado las pruebas funcionan bien. Vea las imágenes a continuación.

Todas las pruebas se ejecutan mediante script gradle, comenzando por eliminar la aplicación anterior y probar api, antes de volver a instalarla. Asegurar un ambiente limpio. El registro indica que la desinstalación se ha realizado correctamente. A continuación, despliegue de la nueva aplicación y comience a ejecutar las pruebas. Ahora fracasan.

Si las pruebas han fallado, no es hasta que manualmente eliminar la aplicación y la prueba api del dispositivo que puedo obtener exitosas pruebas de nuevo. Pero sólo por un tiempo hasta que ocurre el mismo error.

¿Por qué obtengo NoActivityResumedException, no puedo encontrar un buen ejemplo de lo que es y cuándo ocurre.

Vista general del dispositivo con fallo del dispositivo físicoPruebas fallidas

2 Solutions collect form web for “La prueba Espresso falla con NoActivityResumedException a menudo”

Yo tuve el mismo problema. Esto sucede cuando la pantalla del dispositivo está apagada. Active la pantalla para solucionar el problema.

Puede despertar su dispositivo antes de cada prueba usando Uiautomator .

 @Before public void init(){ UiDevice uiDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()); Point[] coordinates = new Point[4]; coordinates[0] = new Point(248, 1520); coordinates[1] = new Point(248, 929); coordinates[2] = new Point(796, 1520); coordinates[3] = new Point(796, 929); try { if (!uiDevice.isScreenOn()) { uiDevice.wakeUp(); uiDevice.swipe(coordinates, 10); } } catch (RemoteException e) { e.printStackTrace(); } } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.