Android-Espresso测试
10 Aug 2018
本项目研究Espresso测试
主要内容
1. 参考资料
2. 代码设计
3. 基本配置
4. 项目介绍
5. 需要注意
6. 存在的疑问
正文
1. 参考资料
Espresso官方开发文档:
https://developer.android.com/training/testing/espresso/?hl=zh-cn
Espresso官方实例:
https://github.com/googlesamples/android-testing
本人研究Espresso的项目:
https://github.com/pulque/EspressoTestDemo
2. 代码设计
先用录制工具初始化大部分代码,然后根据实际需求修改。
尽量涵盖应用的所有正常流程。
例如:登录
2.1 注册等待监听(IdlingResource)
2.2 初始化数据库等需要用到的基本对象和数据
2.3 启动页面
2.4 输入用户名密码
2.5 登录并等待主页打开
2.6 检测Intent,并判断主页信息
3. 基本配置
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test:rules:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:'+rootProject.espressoVersion
androidTestImplementation 'com.android.support.test.espresso:espresso-intents:'+rootProject.espressoVersion
// Note that espresso-idling-resource is used in the code under test.
implementation 'com.android.support.test.espresso:espresso-idling-resource:' + rootProject.espressoVersion
// App's dependencies, including test
implementation 'com.android.support:support-annotations:27.1.1'
4. 项目介绍
本项目并不能直接运行测试,只是把测试的框架和方式展现出来。
实际的测试代码是可以运行通过的,期间也很依赖于应用的源码,
甚至还需要在源码中添加一些阻断测试的设置。
4.1 BooleanIdlingResource
用于在应用执行耗时操作时,阻断测试的工具。
需要在 @Before 注册,在 @After 取消。
设置阻断超时时间代码:
IdlingPolicies.setMasterPolicyTimeout(60 * 1000 * 3, TimeUnit.MILLISECONDS);
IdlingPolicies.setIdlingResourceTimeout(60 * 1000 * 3, TimeUnit.MILLISECONDS);
4.2 BaseActivityTest
所有测试脚本的父类,主要设置阻断监听和初始化启动页面。
4.3 FindViewUtils
基于录制工具生成代码的抽象。
5. 需要注意
- IdlingResource的注册一定要在启动页面之前。
- 一直停在longClick()命令,可能是没有找到View。
6. 存在的疑问
不知道在以后的开发中用处大不……
最后,有一点好处是可以使用Google的Firebase进行测试!!
https://console.firebase.google.com/