zoukankan      html  css  js  c++  java
  • 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. 运行测试用例,查看运行结果.

  • 相关阅读:
    学习精神
    C语言输入、输出格式控制
    C语言输入、输出格式控制
    关于打开VC6.0开发文件出错文件问题
    关于打开VC6.0开发文件出错文件问题
    FormStartPosition 枚举
    FormStartPosition 枚举
    判断文本框输入是否为汉字
    判断文本框输入是否为汉字
    POJ——T 1422 Air Raid
  • 原文地址:https://www.cnblogs.com/wingyip/p/4513752.html
Copyright © 2011-2022 走看看