gpt4 book ai didi

Android Espresso - 如何确认 swipeLeft() 确实滑动了?

转载 作者:太空狗 更新时间:2023-10-29 13:05:59 27 4
gpt4 key购买 nike

我有一个 viewpager,其中至少有 4 个元素,但它是动态的,可以有超过 4 个元素。我想测试我是否能够至少滑动 pager 4 次。该测试正在测试 viewPager 至少有 4 个我可以滑动到的元素。我怎样才能做到这一点。这是我目前所拥有的:

 int numOfPages = 4;
do {
onView(withId(R.id.pager)), matches(isDisplayed());
onView(withId(R.id.pager))
.perform(swipeLeft());
numOfPages--;
} while (numOfPages > 0);

但这只是向左滑动至少 4 次。如果我将 numOfPages 更改为 15,它只会尝试滑动 15 次而不会引发任何错误。那么我怎么知道测试是否成功? viewpager 中的 fragment 不可点击,它们仅显示图像。

最佳答案

如果您只关心页面的数量,那么编写断言有 n 个或多于 n 个页面的 ViewMatcher 是微不足道的:

fun withNumberOfPages(numberOfPages: Matcher<Int>): Matcher<View> {

return object : BoundedMatcher<View, ViewPager>(ViewPager::class.java) {
override fun describeTo(description: Description) {
description.appendText("with ")
numberOfPages.describeTo(description)
description.appendText("number of pages")

}

override fun matchesSafely(viewPager: ViewPager): Boolean {
return numberOfPages.matches(viewPager.adapter?.count ?: -1)
}
}
}

如果您真的想知道寻呼机是否至少“可滑动”4 次,我们可以添加另一个匹配器,断言每次滑动后寻呼机在第 n 页:

fun withSelectedPage(selection: Int): Matcher<View> {
return object : BoundedMatcher<View, ViewPager>(ViewPager::class.java) {
private var actualSelection = -1

override fun describeTo(description: Description) {
if (actualSelection != -1) {
description.appendText("with $selection page selected")
description.appendText("\n But page $actualSelection was selected")
}
}

override fun matchesSafely(viewPager: ViewPager): Boolean {
actualSelection = viewPager.currentItem
return selection == actualSelection
}
}
}

用法如下:

onView(withId(R.id.pager)).check(matches(withNumberOfPages(Matchers.greaterThan(4))))

&&

onView(withId(R.id.pager)).check(matches(withSelectedPage(1)))

但这里的另一个哲学问题是它实际上测试了什么吗?或许。但根据实际业务需求,它可能实际上没有帮助。

用户如何知道他们刷卡成功了?他们可能在屏幕上看到了一些东西。 espresso 的想法是以类似的方式进行测试。如果对页面上的内容有真正的兴趣,那么一切都归结为用于测试的密封环境。如果您无法控制测试接收到的数据,那么您就没有进行太多测试。如果您可以模拟传入的数据,那么 vewpager 将始终设置为相同数量的页面,您将知道每个页面包含什么。这将使您的测试更加独立、确定并提供实际值(value)。

关于Android Espresso - 如何确认 swipeLeft() 确实滑动了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47940330/

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