51Testing软件测试论坛

标题: Android Espresso(UI自动化测试)的搭建 [打印本页]

作者: 一纸荒年    时间: 2018-4-11 14:14
标题: Android Espresso(UI自动化测试)的搭建
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是一个好东
西),不加这行会编译失败的.

复制代码
  1. apply plugin: 'com.android.application'

  2. android {
  3.     compileSdkVersion 22
  4.     buildToolsVersion "22.0.1"

  5.     defaultConfig {
  6.         applicationId "com.example.yezhenrong.myapplication"
  7.         minSdkVersion 15
  8.         targetSdkVersion 22
  9.         versionCode 1
  10.         versionName "1.0"
  11.         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
  12.     }
  13.     buildTypes {
  14.         release {
  15.             minifyEnabled false
  16.             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
  17.         }
  18.     }
  19.     packagingOptions {
  20.         exclude 'LICENSE.txt'
  21.     }
  22. }

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

  26.     // Espresso 相关的引用
  27.     compile 'com.android.support:support-annotations:22.1.1'
  28.     androidTestCompile 'com.android.support:support-annotations:22.1.1'
  29.     androidTestCompile('com.android.support.test.espresso:espresso-core:2.1'){
  30.         exclude group: 'javax.inject'
  31.     }
  32.     androidTestCompile 'com.android.support.test.espresso:espresso-intents:2.1'
  33.     androidTestCompile 'com.android.support.test.espresso:espresso-contrib:2.1'
  34.     androidTestCompile 'com.android.support.test:runner:0.2'
  35. }
复制代码

复制代码


3. 添加Espresso的TestRunner.

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

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


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

         点击"OK"完成!


[attach]113256[/attach]


4. 新建测试用例了类.

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


[attach]113257[/attach]


5. 开始写测试用例了.

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

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

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

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

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

复制代码
  1. ...

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

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

  9.     @Test
  10.     public void testTextViewDisplay() {
  11.         onView(withText("Hello world!")).check(ViewAssertions.matches(isDisplayed()));
  12.     }
  13. }
复制代码

复制代码


        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那个就搞定了!(如下图)


[attach]113258[/attach]


6. 运行测试用例,查看运行结果.
[attach]113259[/attach]






欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2