Android SDK中的自动化测试
2016-08-11 18:14
344 查看
Android中的测试手段非常丰富。通常上,按测试运行环境来划分,可以分为本地单元测试与Instrument测试:
这两种类型测试源码在工程的位置分别为:
这两种测试使用的Runner不同:
本地Unit Test由于使用Junit4,因此与java中的单元测试区别不大,可以灵活的使用Mockito来模拟调用Android的API。同时Android Studio在构建APP时,也会自动生成一个MockableAndroid.jar来支持这一需求。
Instrument类型测试由于类库较多,因此使用的Runner也有所不同。比较常见到的有:
以上几个类在Android SDK中就可以找到,都位于
在Android 5.0版本起,Google又提供了一个专门用于自动化测试的Support包
运行环境 | 测试类型 |
---|---|
PC机 | 本地Unit Test |
Android手机或模拟器 | Instrument Test |
测试类型 | 对应目录 |
---|---|
本地Unit Test | module-name/src/test/java |
Instrument Test | module-name/src/androidTest/java |
测试类型 | TestRunner |
---|---|
本地Unit Test | JUnit4 |
Instrument Test | JUnit3 |
AndroidJunit4 |
Instrument类型测试由于类库较多,因此使用的Runner也有所不同。比较常见到的有:
类名 | 说明 | Runner |
---|---|---|
ApplicationTestCase | Studio默认生成的类,用于测试Application。其可以完整控制Application的生命周期,并且可以通过setContext传入Mock的Context对象进行注入测试。 | Junit3 |
InstrumentationTestCase | 自Eclipse环境起常用的测试类。可以通过获取到Instrument控制APP运行,内部方法较为通用,通常需要二次封装,并且APP中改进一些测试友好的设计。 | Junit3 |
ActivityInstrumentationTestCase | 专门设计来测试Activity的类,不过现在已经废弃了,由ActivityInstrumentationTestCase2代替 | AndroidJunit4 |
ActivityInstrumentationTestCase2 | 新的测试Activity的类,可以通过getAvtivity方法直接获取到被测Activity;不过查阅最新的api24文档,这个类也可能要被废弃 | AndroidJunit4 |
ServiceTestCase | 专门测试Service的类 | AndroidJunit4 |
android.test包中。当然这个包中还有很多其他的测试类。
在Android 5.0版本起,Google又提供了一个专门用于自动化测试的Support包
Android Testing Support Library,其中包括了测试所必要的
AndroidJUnitRunner,还包括了两个重要组件:
Espresso与
UI Automator,这两者均是用来做UI自动化测试的框架。区别在于
Espresso适用于单APP内部UI测试,而
UI Automator适用于跨APP测UI测试。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories