自动化测试框架Espresso(一) 介绍和环境搭建

Posted by boredream on December 16, 2015

首先我也是刚开始熟悉自动化测试这一块,算是边学习边记录分享,如有不足可以指出,万分感谢

单元测试相信对于大家算是最熟悉的陌生人了,很多人都听过,但是一般很少有人写,尤其是自动化的测试代码 对于Android这样重UI的程序来说,更是难以测试

Espresso是Google官方开源的一款测试框架,使用比较简单 它提供了控件定位、各种测试动作、判断等一系列方便的API用于编写自动化测试的代码, 它还可以检测到主线程空闲的状态, 能让系统在适当的时间运行测试命令, 简而言之就是如果你的应用某个按钮会触发网络请求等耗时的操作, 那么Espresso会检测这个请求完成后再继续执行下面的代码,无需手动去Sleep一段时间等待请求完成, 当然对于网上各种各样的框架是需要进行一定设置改造的,这个会在后面具体介绍

名字是Espresso意式浓缩咖啡,意思是在你编写完测试代码运行后,就可以端着个咖啡在旁边悠哉了

首先帖下官方的资料

Google Github io 的介绍主页 https://google.github.io/android-testing-support-library/docs/espresso/index.html

安卓开发者中心的Training教程中的介绍 http://developer.android.com/intl/zh-cn/training/testing/ui-testing/espresso-testing.html

环境搭建的方法教程里都有,我这里再介绍一遍 首先我的开发环境是Android Studio, 如果用Eclipse的同学暂时就爱莫能助啦

修改Project 中的 build.gradle 主要修改3处:

1) 在defaultConfig内增加

1
2
3
     defaultConfig {
          testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
     }

2) 增加packagingOptions,避免编译时候Liscens的冲突;

1
2
3
4
5
     packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
    }

3) 在dependencies中增加Espresso相关的引用

1
2
3
4
5
6
7
8
9
10
11
12
    androidTestCompile('com.android.support.test:runner:0.3') {
        exclude module: 'support-annotations'
    }
    androidTestCompile('com.android.support.test:rules:0.3') {
        exclude module: 'support-annotations'
    }
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2') {
        exclude module: 'support-annotations'
    }
    androidTestCompile('com.android.support.test.espresso:espresso-intents:2.2') {
        exclude module: 'support-annotations'
    }

注意:

修改3中, 如果项目中没有导入过annotations可以单独加一个 compile ‘com.android.support:support-annotations:22.2.0’ 然后修改3中的 { exclude … } 就可以删掉了,比如只要 androidTestCompile(‘com.android.support.test:runner:0.3’) 如果其他地方有导入或包含annotation,且存在版本上的冲突,则按照修改3那样即可

然后环境搭建就OK啦 Android Studio新建项目时会默认生成一个 src/androidTest/java/com.example.package/ 目录 没有的话也可以自己手动创建

然后我们在其中添加测试类即可,一般来说测试页面的话最好在androidTest包下建个和开发代码通目录的类, 比如登录页LoginActivity那么对应的测试类一般是LoginActivityTest在类名后面加个Test, 当然这种都是习惯问题,不用完全遵守 (其实我也不太清楚存放规则,有熟悉的可以和我说下)

系列下一章我们介绍具体代码编写