发布时间:2026/8/24 17:46:57
IdlingResource入门:espresso-samples用自定义空闲资源精确等待指定时长 IdlingResource入门espresso-samples用自定义空闲资源精确等待指定时长【免费下载链接】espresso-samplesA collection of samples demonstrating different Espresso techniques.项目地址: https://gitcode.com/gh_mirrors/esp/espresso-samplesEspresso 是 Android UI 测试的主流框架而 IdlingResource空闲资源是它同步等待异步操作的核心机制。本文基于开源示例集 espresso-samples 的idling-resource-elapsed-time示例手把手教你用自定义空闲资源精确等待指定时长告别测试中脆弱的Thread.sleep()。为什么需要自定义 IdlingResourceEspresso 执行perform(click())等动作后会持续轮询直到界面空闲才继续下一步。但对于应用内部的耗时任务倒计时、网络请求、后台服务Espresso 感知不到它们的进度测试就会因为时机不对而偶发失败。解决办法实现一个IdlingResource向 Espresso 报告现在是否空闲isIdleNow()返回true表示空闲false表示还在忙Espresso 会暂停操作并轮询registerIdleTransitionCallback()当状态从忙转为闲时主动回调onTransitionToIdle()让 Espresso 立刻恢复执行。⚠️ 注意不要像Thread.sleep()那样阻塞线程isIdleNow()必须快速返回。用 ElapsedTimeIdlingResource 等待指定时长idling-resource-elapsed-time示例的思路非常直观记录一个起始时间戳当经过的时间达到预设的waitingTime时就宣告空闲。核心实现在 ElapsedTimeIdlingResource.ktclass ElapsedTimeIdlingResource(private val waitingTime: Long) : IdlingResource { private val startTime: Long System.currentTimeMillis() private var resourceCallback: IdlingResource.ResourceCallback? null override fun isIdleNow(): Boolean { val idle System.currentTimeMillis() - startTime waitingTime if (idle) resourceCallback?.onTransitionToIdle() return idle } override fun registerIdleTransitionCallback(cb: IdlingResource.ResourceCallback) { resourceCallback cb } }这个示例配套了一个简单的计时界面点 Start 开始计时点 Stop 显示结果——如果等待满一分钟则显示 Yes, you waited for a minute!否则显示 Patience, my friend见 MainActivity.kt。注册空闲资源并同步等待的完整流程测试代码位于 MainActivityTest.kt流程分四步启动计时onView(withId(R.id.toggle_button)).perform(click())点击 Start 按钮防止超时把总策略和空闲资源超时设为等待时长的 2 倍——IdlingPolicies.setMasterPolicyTimeout(waitingTime * 2, TimeUnit.MILLISECONDS) IdlingPolicies.setIdlingResourceTimeout(waitingTime * 2, TimeUnit.MILLISECONDS)注册等待注册ElapsedTimeIdlingResource(waitingTime)。此后 Espresso 的每一步操作都会先等它变空闲也就实现了精确等待指定时长验证并清理点击 Stop断言结果文案最后务必IdlingRegistry.getInstance().unregister(...)注销避免污染下一个用例。测试用例覆盖两种场景等待 8 秒断言失败文案等待 75 秒断言成功文案直观验证了等待时长是否生效。项目中其他 IdlingResource 示例espresso-samples还有几个同类示例可按需对照学习目录场景idling-resource-okhttp/等待 OkHttp/Retrofit 网络请求空闲idling-registry-okhttp/同上按 debug/release 拆分实现idling-resource-intent-service/等待后台 IntentService 执行完毕idling-resource-dialog-fragment/练习题等待加载对话框消失小结自定义IdlingResource是让 Espresso 精确同步异步逻辑的标准做法isIdleNow()要快速返回用回调通知状态转换注册前先调整IdlingPolicies超时用完后及时注销想精确等待 N 秒照抄 ElapsedTimeIdlingResource.kt 即可不到 30 行代码搞定。【免费下载链接】espresso-samplesA collection of samples demonstrating different Espresso techniques.项目地址: https://gitcode.com/gh_mirrors/esp/espresso-samples创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

2026/8/24 17:46:56

多导睡眠五大PSG数据集统一格式化处理|SHHS

完整五个数据集处理请见: https://blog.csdn.net/m0_70335361/article/details/151406787?fromshareblogdetail&sharetypeblogdetail&sharerId151406787&sharereferPC&sharesourcem0_70335361&sharefromfrom_linkhttps://blog.csdn.net/m0_70…

2026/8/24 20:13:13

Spring Boot中Jackson配置全解析:从日期处理到性能优化

1. 项目概述:为什么Spring Boot开发者绕不开Jackson?如果你用Spring Boot做过Web开发,尤其是写过RESTful API,那你肯定和Jackson打过交道。它就像一个沉默的“翻译官”,在你不知不觉中,把Java对象&#xff…

2026/8/24 20:13:13

ArcGIS矢量数据重分类:从字段计算器到实战应用

1. 从“分类”到“重分类”:一个被低估的GIS核心操作 在ArcGIS的日常数据处理中,我们经常遇到这样的场景:你手头有一份土地利用数据,其中“地类代码”字段记录了从11到83的各类用地,但你的分析只需要区分“耕地”、“林…

2026/8/24 20:08:11

Java全栈开发面试指南:从基础到架构设计

1. 项目概述 "Java全栈开发面试实录"这个项目源于我在过去三年担任技术面试官的真实经历。作为一家中型互联网公司的技术负责人,我累计面试过200Java全栈开发岗位候选人,从应届生到10年经验的老手都有接触。在这个过程中,我发现很多…

2026/8/24 0:07:22

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/24 1:12:32

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/24 8:17:29

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/24 1:09:25

3条命令跑通LocalAI:无GPU本地AI引擎部署

3条命令跑通LocalAI:无GPU本地AI引擎部署 【免费下载链接】LocalAI LocalAI is the open-source AI engine. Run any model - LLMs, vision, voice, image, video - on any hardware. No GPU required. 项目地址: https://gitcode.com/GitHub_Trending/lo/LocalAI…

2026/8/24 1:09:25

AI推理性能测试怎么做:MLPerf Inference完整上手指南

AI推理性能测试怎么做:MLPerf Inference完整上手指南 【免费下载链接】inference Reference implementations of MLPerf inference benchmarks 项目地址: https://gitcode.com/gh_mirrors/inf/inference 同一个模型换一张卡,速度快多少你知道吗&a…

2026/8/24 13:42:17

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/24 18:13:48

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/23 4:22:01

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…