用于验证 SwipeRefreshLayout 是否显示刷新指示器的 Espresso 测试

Espresso test to verify that SwipeRefreshLayout is showing the refreshing indicator

我想创建一个 Espresso 测试来验证 SwipeRefreshLayout 是否显示刷新指示器。我该怎么做?

没有标准的 Espresso 匹配器,但您可以创建自定义匹配器:

object SwipeRefreshLayoutMatchers {
    @JvmStatic
    fun isRefreshing(): Matcher<View> {
        return object : BoundedMatcher<View, SwipeRefreshLayout>(
            SwipeRefreshLayout::class.java) {

            override fun describeTo(description: Description) {
                description.appendText("is refreshing")
            }

            override fun matchesSafely(view: SwipeRefreshLayout): Boolean {
                return view.isRefreshing
            }
        }
    }
}

然后你可以这样使用它:

onView(withId(R.id.swipe_refresh_layout)).check(matches(isRefreshing()))