Android Espresso(UI自动化测试)的搭建

Espresso是Google官方提供的Android UI自动化测试的框架.

为什么叫Espresso(浓咖啡),好像是想让Android码农们轻松的写完自动化用例后能享受着咖啡,看着自动化测试"飞".

这是Espresso官方的地址.另外,也推荐大家看这个YouTube上关于Espresso环境搭建的短视频.

 

Espresso环境搭建

下面将基于Android Studio,介绍如何搭建Espresso.

1. 在Android Studio中新建一个Project;

2. 修改Project中App/build.gradle脚本;

    主要修改3处:

    1) 在defaultConfig内增加,testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner",用来运行脚本;

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

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

        解释一下exclude group: 'javax.inject',如果项目中有用Dagger或者Dagger2的话(Dagger是一个好东西),不加这行会编译失败的.

apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "com.example.yezhenrong.myapplication"
        minSdkVersion 15
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    packagingOptions {
        exclude 'LICENSE.txt'
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.1.1'

// Espresso 相关的引用 compile 'com.android.support:support-annotations:22.1.1' androidTestCompile 'com.android.support:support-annotations:22.1.1' androidTestCompile('com.android.support.test.espresso:espresso-core:2.1'){ exclude group: 'javax.inject' } androidTestCompile 'com.android.support.test.espresso:espresso-intents:2.1' androidTestCompile 'com.android.support.test.espresso:espresso-contrib:2.1' androidTestCompile 'com.android.support.test:runner:0.2' }

 

3. 添加Espresso的TestRunner.

    1) 点击顶栏菜单Run->Edit Configurations;

    2) 出现如下的窗口后,点击左上角的"+",选择"Android Tests";

     3) 修改新Configuration的名字,选中App Module,输入Runner,选择"Show chooer dialog".

         点击"OK"完成!

 

4. 新建测试用例了类.

    在app/androidTest/java下新建一个类,比如如下图MainActivityTest.class,这个就是我们具体的测试用例的类了.

 

5. 开始写测试用例了.

    1) 首先创建一个@Rule,ActivityTestRule用来指明被测试的Activity;

    2) 测试用例的方法都是@Test的Annotation注解的,方法名字可以随意.

        还可以写setup()和tearDown()方法.

        没错,Espresso的测试框架就是基于Junit的.

    3) 测试方法testTextViewDisplay()里面:

...

import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
import static android.support.test.espresso.matcher.ViewMatchers.withText;

@RunWith(AndroidJUnit4.class)
public class MainActivityTest {
    @Rule
    public ActivityTestRule mActivityRule = new ActivityTestRule(MainActivity.class);

    @Test
    public void testTextViewDisplay() {
        onView(withText("Hello world!")).check(ViewAssertions.matches(isDisplayed()));
    }
}

 

        onView(withText("Hello world!")).check(ViewAssertions.matches(isDisplayed()));

        这行代码都是顾名思义就能猜出意义,大概意思是根据"Hello world!"找到指定的view,然后检查这个view是否isDisplayded(可见).

        Espresso提供的UI自动化的API很丰富,这里有个简单的他们类的层级关系.

        Espress推荐写测试用例的时候使用static import来简化代码.在Android Studio中,static import的快捷键是,当你输入了"onView",然后按键盘的Alt+Enter会出现一个菜单选static import那个就搞定了!(如下图)

 

6. 运行测试用例,查看运行结果.

posted on 2015-05-19 23:09  wingyip  阅读(8902)  评论(2编辑  收藏  举报

导航