Intereting Posts
Как начать новую работу после успешного входа в систему? Что такое SecDownloader Android: проблема с соотношением сторон видео для MediaPlayer Какие шаблоны проектирования я должен изучить перед запуском Android Development В Android должен каждый экран быть собственным Управлением или макетом? Android: LocationManager динамически регулирует пороговые значения minTime / minDistance Каковы мои варианты хранения данных при использовании React Native? (IOS и Android) Невозможно установить APK из загрузки браузера В приложении для покупки отображается сообщение «у вас уже есть этот элемент». В android Потоковое видео с php-сервера на Android Кинжал: класс не может быть связан с ключом Почему добавление if-statement внутри этого метода значительно замедляет его? Как приложение «Настройки» запускает неэкспонированную деятельность приложения? Resources.getIdentifier (), возможные значения аргумента deftype? Как сделать простой видеопроигрыватель VR с помощью Google CardBoard Android SDK и Rajawali

Тест Espresso не работает с NoActivityResumedException часто

EDIT: Обновлено описание и сообщение об ошибке и добавлены некоторые изображения. Все еще есть эта проблема.

У меня странная ошибка, которая возникает много раз при запуске тестов эспрессо. После нескольких успешных тестовых запусков тесты начинают сбой со следующего исключения:

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) 

У меня есть простое приложение с навигацией на страницы, содержащие текст только на этом этапе, и тест должен перейти на каждую страницу и идентифицировать этот текст.

 @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"); } } 

Этот сбой происходит только на реальном устройстве. На эмулированном устройстве тесты отлично работают. См. Изображения ниже.

Все тесты выполняются сценарием gradle, начиная с удаления предыдущего приложения и теста api, перед его повторной установкой. Обеспечить чистую окружающую среду. Журнал показывает, что удаление было успешным. Затем развертывание нового приложения и запуск тестов. Теперь они терпят неудачу.

Если тесты потерпели неудачу, это произойдет только после того, как я вручную удалю приложение и тест api с устройства, чтобы снова получить успешные тесты. Но только на время, пока не произойдет такая же ошибка.

Почему я получаю NoActivityResumedException, я не могу найти хороший пример того, что это такое и когда оно происходит.

Обзор устройства с отказом только физического устройстваНеудачные тесты

Solutions Collecting From Web of "Тест Espresso не работает с NoActivityResumedException часто"

У меня такая же проблема. Это происходит, когда экран на устройстве выключен. Включите экран, чтобы устранить проблему.

Вы можете пробудить свое устройство перед каждым тестом, используя 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(); } }