java - 如何检查 recyclerView 是否为空 Espresso
问题描述
如何使用 espresso 检查我的 recyclerview 是否为空?
我知道我可以通过单击元素位置来检查它是否有元素,但我想通过检查它是否为空来开始我的测试。
@RunWith(AndroidJUnit4ClassRunner::class)
class TagsFragmentTest {
@Rule
@JvmField
var repeatRule: RepeatRule = RepeatRule()
@get:Rule
var activityScenarioRule = activityScenarioRule<LoginActivity>()
@Test
@RepeatTest(1)
fun test_checkTags() {
//check main activity
Thread.sleep(5000);
onView(withId(R.id.mainFragmentManager)).check(matches(isDisplayed()))
//go to Tags fragment
onView(withId(R.id.nav_tags)).check(matches(isDisplayed()))
onView(withId(R.id.nav_tags)).perform(click())
//CHECK MY RECYCLERVIEW IS EMPTY
//ADD TAGS
//CHECK IF HAS TAGS
}
}
解决方案
我创建了一个自定义 ViewMatcher:
fun recyclerViewSizeMatcher(matcherSize: Int): Matcher<View?>? {
return object : BoundedMatcher<View?, RecyclerView>(RecyclerView::class.java) {
override fun describeTo(description: Description) {
description.appendText("with list size: $matcherSize")
}
override fun matchesSafely(recyclerView: RecyclerView): Boolean {
return matcherSize == recyclerView.adapter!!.itemCount
}
}
}
检查是否adapter.itemCount
有传递的元素。
您可以将其用作:
recyclerViewSizeMatcher(0)
在这种情况下,它必须为空(0 个元素)。
推荐阅读
- c++ - 在下面的代码中使用释放和移动的区别
- ruby-on-rails - 是否可以使用 Liquid shopify 读取本地文件内容并将其内容加载到页面中
- python - 我已经在我的电脑上尝试过,它运行良好,但在 pyschools 网站上仍然出现“浮点除以零”。为什么 ??:
- dart - 缺少 Getter 和 Setter 的具体实现
- dialogflow-es - 使用 java dialogflowv2 生成包含快速回复的 WebhookResponse
- sql - 我的数据只显示一个,但数据应该不止一个
- lambda - 使用 Terraform/CloudFormation/Something 有效地部署 lambdas(只部署那些改变的)
- python - 使用 map 函数根据字典转换列名的麻烦
- php - 运行新项目时找不到接口“Monolog\ResettableInterface”
- php - 我如何在特定网站上抓取任何 div 的内容并显示它的内容