底部浓缩咖啡测试

时间:2017-11-20 05:36:34

标签: android android-espresso android-testing bottom-sheet

我正在为底页创建一个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());

1 个答案:

答案 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");