Я пишу тест в Android Espresso, который должен, после нажатия на элемент в утилите, открыть подробное описание элемента (начать новое действие).
Все отлично работает на устройстве. Если я попытаюсь запустить этот тест с Robolectric, второе действие не будет запущено.
FirstActivity создается с помощью:
@Rule
public ActivityScenarioRule<FirstActivity> activityRule = new ActivityScenarioRule<>(FirstActivity.class);
При щелчке слушатель начинает второе действие с:
activity.startActivity(new Intent(activity, SecondActivity.class).putExtra(PARAM_ID, paramId));
Проблема возникает, когда я пытаюсь запустить второе действие, щелкнув элемент в RecyclerView:
onView(withId(R.id.recyclerview_messages)).check(matches(isDisplayed())).perform(RecyclerViewActions.actionOnItemAtPosition(idx, click()));
Хотя эта строка не возвращает никакой ошибки, проверьте, завершилось ли действие, завершается с ошибкой:
onView(withId(R.id.relativelayout_messages_detail)).check(matches(isDisplayed()))
androidx.test.espresso.NoMatchingViewException: No views in hierarchy found matching: with id: my.project.app.test:id/relativelayout_messages_detail
at java.lang.Thread.getStackTrace(Thread.java:1559)
at androidx.test.espresso.base.DefaultFailureHandler.getUserFriendlyError(DefaultFailureHandler.java:96)
at androidx.test.espresso.base.DefaultFailureHandler.handle(DefaultFailureHandler.java:59)
at androidx.test.espresso.ViewInteraction.waitForAndHandleInteractionResults(ViewInteraction.java:322)
at androidx.test.espresso.ViewInteraction.check(ViewInteraction.java:306)
at my.project.app.BaseActivityTest.checkAndGetView(BaseActivityTest.java:72)
at my.project.app.FirstActivityTest.testMessageReadCount(FirstActivityTest.java:127)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:48)
at org.junit.rules.RunRules.evaluate(RunRules.java:20)
at org.robolectric.RobolectricTestRunner$HelperTestRunner$1.evaluate(RobolectricTestRunner.java:546)
at org.robolectric.internal.SandboxTestRunner$2.lambda$evaluate$0(SandboxTestRunner.java:252)
at org.robolectric.internal.bytecode.Sandbox.lambda$runOnMainThread$0(Sandbox.java:89)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Использование:
Робоэлектрик: 4,3
Эспрессо: 3.2.0
androidx.test: 1.2.0
Android SDK: 24
Ява: 8
Может кто-нибудь указать мне правильное направление, где может быть проблема?
Спасибо.