espresso-samples列表测试教程:用onData三行代码搞定ListView点击验证
espresso-samples列表测试教程用onData三行代码搞定ListView点击验证【免费下载链接】espresso-samplesA collection of samples demonstrating different Espresso techniques.项目地址: https://gitcode.com/gh_mirrors/esp/espresso-samplesespresso-samples 是一个专门演示 Android Espresso UI 测试技巧的官方示例集合涵盖列表测试、Idling Resource、屏幕旋转等场景。本教程选取其中的 list-view-basic 示例带你用 onData 的三行代码完成「点击 ListView 指定条目 → 验证界面反馈」的完整列表测试闭环新手也能快速上手。为什么列表点击要「特殊处理」在 Espresso 中测试列表界面时很多人第一反应是onView(withText(27)).perform(click())但这有两个大坑条目可能还没显示在屏幕上ListView 会复用条目列表很长时第 27 项根本不在可见区域直接按文字查找会找不到目标重复文字会匹配多个视图列表里文字重复时withText会报歧义错误。onData就是为了解决这两个问题而生的它按列表背后的数据定位条目而不是按当前屏幕上的文字Espresso 会自动帮你把目标条目滚动到可见位置再点击。三步拿到示例代码1️⃣ 克隆仓库如已克隆可跳过git clone https://gitcode.com/gh_mirrors/esp/espresso-samples2️⃣ 进入本次教程的主角模块list-view-basic/它包含一个完整的可运行示例被测应用list-view-basic/app/src/main/java/com/sqisland/android/espresso/list_view_basic/MainActivity.kt测试代码list-view-basic/app/src/androidTest/java/com/sqisland/android/espresso/list_view_basic/MainActivityTest.kt3️⃣ 打开 Android Studio 导入项目连上设备后直接运行 androidTest 下的测试类即可。先看看被测界面在做什么界面里有一个装填 30 个数字0~29的ListView点击某个数字后数字会显示在列表下方的文本框中。测试要验证的就是「点击第 27 项下方文本框出现 27」这个行为。onData 三行代码完成列表点击验证 ✅整个核心操作只需要三行onData(withValue(27)) .inAdapterView(withId(R.id.list)) .perform(click())逐行拆解代码作用onData(withValue(27))按数据定位找到值为 27 的那个条目.inAdapterView(withId(R.id.list))指明目标列表是哪个ListViewid 为list.perform(click())对定位到的条目执行点击配套的数据匹配器withValue也不复杂它通过自定义BoundedMatcher把条目转成字符串后与期望值比较源码见测试文件中的companion object部分。点击之后再用两条断言收尾验证点击真的生效了onView(withId(R.id.text)) .check(matches(withText(27))) .check(matches(isDisplayed())) 小技巧完整的测试方法开头还会先断言文本框初始状态是隐藏的not(isDisplayed())这样点击后从「隐藏 → 显示 27」的完整变化链路就被验证得严严实实。相关示例继续升级你的列表测试 列表测试远不止 ListView仓库里还有两个配套示例值得搭配学习recycler-view-basic/演示用actionOnItemAtPosition点击RecyclerView条目。注意它对列表项的要求比onData简单粗暴——适合条目内容固定、无需精确匹配数据的场景repeatedly-until/演示repeatedlyUntil技巧例如「反复点击 1 按钮直到数字变成 11」对验证需要多次交互才能出现的界面状态非常实用。三个示例各有侧重onData负责精准数据匹配actionOnItemAtPosition负责按位置快速点击repeatedlyUntil负责重复操作。掌握这三件套绝大多数列表交互测试都能迎刃而解。总结onData按数据定位条目天然避开「条目未上屏」「文字重复」两大坑三行代码onData(...).inAdapterView(...).perform(click())即可完成列表点击记得用断言验证点击前后的界面状态变化测试才算真正闭环。打开 list-view-basic 示例动手跑一遍你会发现列表测试真的可以这么简单【免费下载链接】espresso-samplesA collection of samples demonstrating different Espresso techniques.项目地址: https://gitcode.com/gh_mirrors/esp/espresso-samples创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考