我正在为底页创建一个espresso测试,其中工作表有5个线性排列的textview,第一个textview可见,单击第一个textview将展开整个底部工作表,显示所有项目,然后需要第三个项目单击以进行测试。
问题是espresso在扩展后没有点击底部工作表的文本视图,直到我放置Thread.sleep(1000)
。
我甚至尝试过IdlingResource,一旦在第一个项目上注册了点击,并且在bottomSheetBehaviour上调用了onStateChanged之后我将其设置为false我再次将其设置为true但仍然没有帮助。
这不起作用:
onView(withId(R.id.toolsItem1)).perform(click());
onView(withId(R.id.toolsItem3)).check(matches(isDisplayed()));
onView(withId(R.id.toolsItem3)).perform(click());
这样做:
onView(withId(R.id.toolsItem1)).perform(click());
Thread.sleep(1000);
onView(withId(R.id.toolsItem3)).check(matches(isDisplayed()));
onView(withId(R.id.toolsItem3)).perform(click());
答案 0 :(得分:0)
我有同样的问题。从我的角度来看,Thread.sleep()解决方案似乎是可行的方法。
但是我使用了一个名为https://github.com/awaitility/awaitility的第三方库来等待,直到底表的状态发生变化而不是固定的时间为止。我这样使用它:
await().atMost(1, SECONDS).until(() -> fragment.bottomSheetBehavior.getState()==BottomSheetBehavior.STATE_HIDDEN);
片段是要测试的片段,例如,您可以得到这样的片段:
MyFragment fragment = (MyFragment) activityTestRule.getActivity().getSupportFragmentManager().findFragmentByTag("Tag");