Espresso:自定义Idling Resource
来源:互联网 发布:手机淘宝如何实名认证 编辑:程序博客网 时间:2024/05/13 17:54
Espresso的一个关键功能是测试程序和被测应用是同步执行的。这是基于idling的概念:Espresso等待app处于idle状态,才会执行下个动作和检查下个断言。
Idle
app处于idle状态是什么意思?Espresso检查下面几个场景:
- 在当前消息队列中没有UI事件;
- 在默认的AsyncTask线程池没有任务;
但是,如果app以其他方式执行长时间运行操作,Espresso不知道如何判断这些操作已经完成。如果是这样的话,可以通过编写自定义的IdelingResource来通知Espresso的等待时间。
IntentServiceIdlingResource
假设你使用IntentService
来做一些长时间运算,然后通过broadcast将结果返回给activity。我们希望Espresso一直等到结果返回,才来验证界面显示正确。
为了实现IdlingResource,需要重写3个函数:getName()
,registerIdleTransitionCallback()
,isIdleNow()
。
@Overridepublic String getName() { return IntentServiceIdlingResource.class.getName();}@Overridepublic void registerIdleTransitionCallback(ResourceCallback resourceCallback) { this.resourceCallback = resourceCallback;}@Overridepublic boolean isIdleNow() { boolean idle = !isIntentServiceRunning(); if (idle && resourceCallback != null) { resourceCallback.onTransitionToIdle(); } return idle;}private boolean isIntentServiceRunning() { ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); for (ActivityManager.RunningServiceInfo info : manager.getRunningServices(Integer.MAX_VALUE)) { if (RepeatService.class.getName().equals(info.service.getClassName())) { return true; } } return false;}
idle逻辑是在isIdleNow()
实现的。在这个例子中,我们通过查询ActivityManager
来检查IntentService
是否正在运行。如果IntentService
停止运行,我们调用resourceCallback.onTransitionToIdle()
来通知Espresso。
注册idling resource
为了让Espresso等待自定义的idling resource,你需要注册它。在测试代码的@Before
方法中执行注册,在@After
中执行注销。
@Beforepublic void registerIntentServiceIdlingResource() { Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation(); idlingResource = new IntentServiceIdlingResource(instrumentation.getTargetContext()); Espresso.registerIdlingResources(idlingResource);}@Afterpublic void unregisterIntentServiceIdlingResource() { Espresso.unregisterIdlingResources(idlingResource);}
完整示例
Check out完整示例的源码。尝试注释掉IdlingResource
注册,测试会失败。
阅读全文
0 0
- Espresso:自定义Idling Resource
- Espresso:自定义Idling Resource
- Espresso Idling Resource
- Espresso Idling Resource 使用
- 深入研究Espresso的Idling Resource
- espresso之自定义Matcher
- Espresso
- 自定义$resource指令
- android espresso
- Espresso简介
- Espresso basics
- Espresso 基础
- Espresso学习笔记二:Espresso基础知识
- Espresso学习笔记二:Espresso基础知识
- Espresso指南二(Espresso意图)
- resource
- resource
- Resource
- iOS 播放gif图片
- 新闻的离线下载功能仿网易之(二) 带缓存的功能实现
- windown环境下的Tomcat+nginx基本配置
- pandas
- ibatis 实现批量增加增加数据
- Espresso:自定义Idling Resource
- 敏捷测试理论以及实践
- listView的setOnScrollListener事件
- PHP: 深入了解一致性哈希
- 39-Combination Sum
- 《樱花抄》
- 自己搞,带注释,适合初学者:C程序设计语言练习1-22 把较长的输入行折成短一些的两行或多行,折行的位置在输入行的第n列之前的最后一个非空格之后
- 用openCV去除文字中乱入的线条
- 5-51 两个有序链表序列的合并 (20分)