gpt4 book ai didi

android - Bottom Sheet Espresso 测试

转载 作者:太空狗 更新时间:2023-10-29 14:41:32 25 4
gpt4 key购买 nike

我正在为 Bottom Sheet 创建一个 Espresso 测试,其中工作表有 5 个线性排列的 TextView ,第一个 TextView 是可见的,单击第一个 TextView 将展开整个 Bottom Sheet ,显示所有项目,然后需要第三个项目单击以通过测试。

问题是在我放置 Thread.sleep(1000) 之前,espresso 在展开后不会点击 Bottom Sheet 的 textview。

我什至尝试过 IdlingResource,一旦在第一个项目上注册了点击,我将其设置为 false,在 bottomSheetBehaviour 上调用 onStateChanged 后,我再次将其设置为 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());

最佳答案

我遇到了同样的问题。遗憾的是,从我的角度来看,Thread.sleep() 解决方案似乎是可行的方法。

但我使用了一个名为 https://github.com/awaitility/awaitility 的第三方库等到 bottomsheet 的状态改变而不是固定的时间。我是这样使用它的:

await().atMost(5, SECONDS).until(() -> fragment.bottomSheetBehavior.getState()==BottomSheetBehavior.STATE_EXPANDED);

其中 fragment 是要测试的 fragment ,您可以像这样获得:

MyFragment fragment = (MyFragment) activityTestRule.getActivity().getSupportFragmentManager().findFragmentByTag("Tag");

关于android - Bottom Sheet Espresso 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47385628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com