|
Android中的测试手段非常丰富。通常上,按测试运行环境来划分,可以分为本地单元测试与Instrument测试:
| 运行环境 |
测试类型 |
| PC机 |
本地Unit Test |
| Android手机或模拟器 |
Instrument Test |
这两种类型测试源码在工程的位置分别为:
| 测试类型 |
对应目录 |
| 本地Unit Test |
module-name/src/test/java |
| Instrument Test |
module-name/src/androidTest/java |
这两种测试使用的Runner不同:
| 测试类型 |
TestRunner |
| 本地Unit Test |
JUnit4 |
| Instrument Test |
JUnit3 |
|
AndroidJunit4 |
本地Unit Test由于使用Junit4,因此与java中的单元测试区别不大,可以灵活的使用Mockito来模拟调用Android的API。同时Android Studio在构建APP时,也会自动生成一个MockableAndroid.jar来支持这一需求。
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 SDK中就可以找到,都位于android.test包中。当然这个包中还有很多其他的测试类。
在Android 5.0版本起,Google又提供了一个专门用于自动化测试的Support包Android Testing Support Library,其中包括了测试所必要的AndroidJUnitRunner,还包括了两个重要组件:
Espresso与UI Automator,这两者均是用来做UI自动化测试的框架。区别在于Espresso适用于单APP内部UI测试,而UI Automator适用于跨APP测UI测试。
|