Studio中布置工程用于测试。Studio中安排工程用于测试。

本篇教程翻译由Google I/O
2015倍受关于测试的codelab,掌握科学上网的同桌要点击这里看:Unit
and UI Testing in Android
Studio。能力有限,如产生翻译错误,请批评指正。如要转载,请注明出处。
Github下充斥测试源码

原文:
http://www.jianshu.com/p/03118c11c199

目录

  • 以Android Studio中开展单元测试和UI测试 –
    1.概述
  • 当Android Studio中进行单元测试和UI测试 – 2.创办新的Android
    Studio工程
  • 每当Android Studio中进行单元测试和UI测试 –
    3.布置支持单元测试的工
  • 在Android Studio中进行单元测试和UI测试 –
    4.创办第一个单元测试
  • 在Android Studio中进行单元测试和UI测试 –
    5.运转单元测试
  • 于Android Studio中展开单元测试和UI测试 –
    6.部署支持Instrumentation测试的工程
  • 于Android Studio中开展单元测试和UI测试 –
    7.为app添加简单的相互
  • 当Android Studio中开展单元测试和UI测试 –
    8.创立并运行Espresso测试
  • 以Android Studio中开展单元测试和UI测试 –
    9.拜!

本篇教程翻译由Google I/O
2015遭受有关测试的codelab,掌握科学上网的校友请点击这里阅读:Unit
and UI Testing in Android
Studio。能力简单,如有翻译错误,请批评指正。如需转载,请注明出处。Github下充斥测试源码

1.概述

以是codelab中,你拿修如何以Android
Studio中配置工程用于测试,在支付机器上编制并运行单元测试,以及哪在大哥大上举行功能UI测试。

汝晤面套到什么

  • 更新包含JUnit和Android Testing Support Library的Gradle构建文件
  • 编运行于本机Java虚拟机上之单元测试
  • 编纂运行于大哥大还是虚拟机上之Espresso测试

公要什么

  • Android
    Studio
    v1.2+
  • Android 4.0+的测试设施

目录

  • 1.概述
  • 2.创立新的Android
    Studio工程
  • 3.配置支持单元测试的工程
  • 4.开立第一独单元测试
  • 5.周转单元测试
  • 6.布置支持Instrumentation测试的工程
  • 7.为app添加简单的互动
  • 8.创建并运行Espresso测试
  • 9.祝贺!

<a id=”1″>.</a>

2.创新的Android Studio工程

若是率先次等开行Android Studio,从迎页选择“Start a new Android
Studio project
”。如果都打开了一个工程,选择File>New>New
Project…

Create new project”向导会指导整个过程,在率先页输入如下内容:

Setting Value
Application Name TestingExample
Company demain testing.example.com

然见面确保你的代码和codelab讲解的内容具有同等的命名。其他的选择项都设置也默认,一路点击Next直到工程创建了。

点击Run按钮检查app是否运行正常化,要么从模拟器列表中甄选一个起步,要么确认被了debug模式之设施经过USB同电脑科学连接。

app目前从未有过召开任何工作,但是屏幕及应有显示“Hello world!”和app的名字。

时常于问及的问题

  • 怎样安装Android
    Studio?
  • 怎么被USB调试?
  • 缘何Android
    Studio找不顶自身之配备?
  • Android错误:无法将*.apk安装至设备上:超时?

1.概述

每当这个codelab中,你拿修如何当Android
Studio中安排工程用于测试,在付出机器上编制并运行单元测试,以及哪以大哥大上举行功能UI测试。

而见面套到什么

  • 更新包含JUnit和Android Testing Support Library的Gradle构建文件
  • 编写运行在本机Java虚拟机上的单元测试
  • 编排运行在大哥大要虚拟机上的Espresso测试

公得什么

  • Android
    Studio
    v1.2+
  • Android 4.0+的测试设施

<a id=”2″>.</a>

3.配备支持单元测试的工

于描绘测试之前,让我们举行下简单的反省,确保工程安排不错。

首先,确认在Build Variants窗口内之Test Artifact饱受选取了”Unit
Tests”。

接下来,在工程的src文本夹内创建testtest/java文件夹。需要专注的凡,你无克当Android顾图下进展这些操作,要么以系的文件管理器内创造,要么在工程窗口左上方点击下拉菜单选择Project视图。最终之工组织应该是这么的:

(在codelab的结余部分,你可以回去继续采用Android工程视图)

末了,打开工程的build.gradle(Module:app)文件,添加JUnit4依赖,点击Gradle
sync
按钮。

build.gradle

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

当您一头Gradle配置时,可能得联网下载JUnit依赖。


2.创立新的Android Studio工程

设是率先软开行Android Studio,从迎页选择“Start a new Android
Studio project
”。如果既打开了一个工,选择File>New>New
Project…

Create new project”向导会指导整个过程,在首先页输入如下内容:

Setting Value
Application Name TestingExample
Company demain testing.example.com

这般见面管你的代码和codelab讲解的情节有所相同的命名。其他的取舍项都安也默认,一路点击Next以至工程创建了。

点击Run按钮检查app是否运行如常,要么从模拟器列表中选择一个启动,要么确认被了debug模式之配备经过USB同电脑科学连接。

app目前并未开另外业务,但是屏幕及该显得“Hello world!”和app的名字。

常给问及的题材

  • 怎么安装Android
    Studio?
  • 怎么样打开USB调试?
  • 怎么Android
    Studio找不至我之设备?
  • Android错误:无法将*.apk安装到设备上:超时?

<a id=”3″>.</a>

4.创立第一只单元测试

兹,万事俱备,让咱们开始写第一个测试吧。首先,创建一个非常简单的给测类:Calculator类。

下一场,向类吃上加有中心的算术运算方法,比如加法和减法。将下列代码复制到编辑器中。不用担心其实的兑现,暂时为具有的艺术返回0。

Calculator.java

package com.example.testing.testingexample;

public class Calculator {

    public double sum(double a, double b){
        return 0;
    }

    public double substract(double a, double b){
        return 0;
    }

    public double divide(double a, double b){
        return 0;
    }

    public double multiply(double a, double b){
        return 0;
    }
}

Android
Studio提供了一个便捷创建测试类的点子。只需要以编辑器内右键点击Calculator类的扬言,选择Go
to > Test
,然后“Create a new test…”

每当开拓的对话窗口被,选择JUnit4和”setUp/@Before“,同时为富有的计算器运算生成测试方法。

然,就会见于正确的公文夹内(app/src/test/java/com/example/testing/testingexample)转测试接近框架,在框架内填充入测试方法即可。下面是一个示范:

Calculator.java

package com.example.testing.testingexample;

import org.junit.Before;
import org.junit.Test;

import static org.junit.Assert.*;

public class CalculatorTest {

    private Calculator mCalculator;

    @Before
    public void setUp() throws Exception {
        mCalculator = new Calculator();
    }

    @Test
    public void testSum() throws Exception {
        //expected: 6, sum of 1 and 5
        assertEquals(6d, mCalculator.sum(1d, 5d), 0);
    }

    @Test
    public void testSubstract() throws Exception {
        assertEquals(1d, mCalculator.substract(5d, 4d), 0);
    }

    @Test
    public void testDivide() throws Exception {
        assertEquals(4d, mCalculator.divide(20d, 5d), 0);
    }

    @Test
    public void testMultiply() throws Exception {
        assertEquals(10d, mCalculator.multiply(2d, 5d), 0);
    }
}

恳请用代码复制到编辑器或者使用JUnit框架提供的预言来修好之测试。


3.配置支持单元测试的工程

当描绘测试之前,让咱们开生简单的检讨,确保工程安排不错。
首先,确认在Build Variants窗口外之Test Artifact倍受甄选了”Unit
Tests”。

然后,在工程的 src 文件夹内创造 testtest/java
文件夹。需要小心的是,你莫能够于Android望图下进展这些操作,要么以系统的文件管理器内创造,要么在工程窗口左上方点击下拉菜单选择Project视图。最终的工组织应该是这么的:

(在codelab的结余部分,你可以回到继续行使Android工程视图)

末了,打开工程的build.gradle(Module:app)文件,添加JUnit4依赖,点击Gradle
sync
按钮。

build.gradle

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

当您一块Gradle配置时,可能得联网下载JUnit依赖。

<a id=”4″>.</a>

5.运行单元测试

好不容易到运行测试的时段了!右键点击CalculatorTest类,选择Run >
CalculatorTest
。也得以透过命令执行运行测试,在工程目录外输入:

./gradlew test

好歹运行测试,都当看输出显示4单测试都黄了。这是预料的结果,因为咱们尚没实现运算操作。

深受我们修改Calculator类中之sum(double a, double b)方返回一个不利的结果,重新运行测试。你应当看4独测试着之3单破产了。

Calculator.java

public double sum(double a, double b){
    return a + b;
}

用作练兵,你可以兑现多余的法门要有的测试通过。

恐你已注意到了Android
Studio从来没给你总是装置或者启动模拟器来运行测试。那是坐,位于src/tests目下的测试是运行在地头电脑Java虚拟机上的单元测试。编写测试,实现力量一旦测试通过,然后再度补偿加更多之测试…这种工作办法使快速迭代成为可能,我们称为测试驱动开发
值得注意的凡,当于该地运行测试时,Gradle为您在环境变量中提供了带有Android框架的android.jar包。但是它功能未完全(所以,打只假设,你不可知止调用Activity的不二法门并期它生效)。推荐应用Mockito当mocking框架来mock你要动用的任何Android方法。对于运行在设备及,并充分利用Android框架的测试,请继续读书本篇教程的生只有。


4.创造第一个单元测试

如今,万事俱备,让咱初步写第一只测试吧。首先,创建一个非常简单的叫测类:Calculator类。

然后,向类中上加有为主的算术运算方法,比如加法和减法。将下列代码复制到编辑器中。不用操心其实的兑现,暂时为有的法子返回0。

Calculator.java

package com.example.testing.testingexample;

public class Calculator { 
    public double sum(double a, double b){ 
        return 0; 
    } 

    public double substract(double a, double b){ 
        return 0; 
    } 

    public double divide(double a, double b){ 
        return 0; 
    } 

    public double multiply(double a, double b){ 
        return 0;
     }
}

Android
Studio提供了一个快创建测试类的方。只需要在编辑器内右键点击Calculator类的宣示,选择Go
to > Test
,然后“Create a new test…”

每当打开的对话窗口被,选择JUnit4和”setUp/@Before“,同时为有着的计算器运算生成测试方法。

如此,就会当不利的公文夹内(app/src/test/java/com/example/testing/testingexample)
变化测试接近框架,在框架内填充入测试方法即可。下面是一个演示:

Calculator.java

package com.example.testing.testingexample;

import org.junit.Before;
import org.junit.Test;

import static org.junit.Assert.*;

public class CalculatorTest { 

    private Calculator mCalculator; 

    @Before 
    public void setUp() throws Exception { 
        mCalculator = new Calculator(); 
    } 

    @Test 
    public void testSum() throws Exception { 
        //expected: 6, sum of 1 and 5 assertEquals(6d, mCalculator.sum(1d, 5d), 0); 
    } 

    @Test 
    public void testSubstract() throws Exception { 
        assertEquals(1d, mCalculator.substract(5d, 4d), 0); 
    } 

    @Test 
    public void testDivide() throws Exception { 
        assertEquals(4d, mCalculator.divide(20d, 5d), 0); 
    } 

    @Test 
    public void testMultiply() throws Exception { 
        assertEquals(10d, mCalculator.multiply(2d, 5d), 0); 
    }
}

央将代码复制到编辑器或者利用JUnit框架提供的预言来修好之测试。


<a id=”5″>.</a>

6.布局支持Instrumentation测试的工

尽管如此于Android框架内支持运行instrumentation测试,但是时开发重点主要集中在正揭晓之当作Android
Testing Support
Library
有些之新的AndroidJUnitRunner。测试库包含Espresso,用于运行效果UI测试的框架。让我们经过编制build.gradle的系部分来把它添加进我们的工程。

build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "com.example.testing.testingexample"
        minSdkVersion 15
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"

        //ADD THIS LINE:
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    //ADD THESE LINES:
    packagingOptions {
        exclude 'LICENSE.txt'
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.0.0' //← MAKE SURE IT’S 22.0.0
    testCompile 'junit:junit:4.12'

    //ADD THESE LINES:
    androidTestCompile 'com.android.support.test:runner:0.2'
    androidTestCompile 'com.android.support.test:rules:0.2'
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.1'
}

重要:由于有凭版本冲突,你需要承认com.android.support:appcompat-v7库房底版本号是22.0.0,像面的代码有一样。
除此以外,Android
Studio可能会见唤起您Build Tools 22.0.1未曾装。你当接受修复建议,Studio会为您安装Build
Tools或者当build.gradle中拿立即行修改成已经设置在您电脑的本子。

点的工作好后,在Build Variants窗口内切换成Android
Instrumentation Tests
,你的工程应自行同步。如果无,点击Gradle
sync
按钮。


5.运转单元测试

终于到运行测试的时刻了!右键点击CalculatorTest类,选择Run >
CalculatorTest
。也堪由此命令执行运行测试,在工程目录内输入:

./gradlew test

好歹运行测试,都应看到输出显示4独测试都砸了。这是意料的结果,因为咱们尚无兑现运算操作。

于我们修改Calculator类中之sum(double a, double b)方返回一个没错的结果,重新运行测试。你应有看到4单测试中之3只败了。

Calculator.java

public double sum(double a, double b){ 
    return a + b;
}

作练兵,你可兑现多余的道要有的测试通过。

或者你已经注意到了Android
Studio从来没有叫您总是装置或者启动模拟器来运转测试。那是为,位于src/tests目录下的测试是运作于本土电脑Java虚拟机上的单元测试。编写测试,实现效益一旦测试通过,然后还续加更多之测试…这种工作措施若快速迭代成为可能,我们誉为测试驱动开发。值得注意的是,当于地方运行测试时,Gradle为公以环境变量中提供了涵盖Android框架的android.jar包。但是她功能不整(所以,打只假设,你莫克独调用Activity的法并期待它生效)。推荐使用Mockito顶mocking框架来mock你得以的任何Android方法。对于运行在设备上,并充分利用Android框架的测试,请继续看本篇教程的下单组成部分。


<a id=”6″>.</a>

7.为app添加简单的交互

当使用Espresso进行UI测试前,让咱们也app添加一些Views和精炼的竞相。我们下一个用户可输入名字的EditText,欢迎用户之Button和用来出口的TextView。打开res/layout/activity_main.xml,粘贴如下代码:
activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

    <TextView
        android:id="@+id/textView"
        android:text="@string/hello_world" android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <EditText
        android:hint="Enter your name here"
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Say hello!"
        android:layout_below="@+id/editText"
        android:onClick="sayHello"/>
</RelativeLayout>

尚需要在MainActivity.java中添加onClick handler:

MainActivity.java

public void sayHello(View v){
    TextView textView = (TextView) findViewById(R.id.textView);
    EditText editText = (EditText) findViewById(R.id.editText);
    textView.setText("Hello, " + editText.getText().toString() + "!");
}

今日足运行app并认可一切工作正常化。在点击Run按钮前,确认你的Run
Configuration
不曾设置为运行测试。如用转,点击下拉选项,选择app


6.布局支持Instrumentation测试的工程

尽管在Android框架内支持运行instrumentation测试,但是目前开主导主要汇集在刚公布的当Android
Testing Support
Library
有的的初的AndroidJUnitRunner。测试库包含Espresso,用于周转效果UI测试的框架。让咱经过编制build.gradle的有关部分来拿它们添加进我们的工。

build.gradle

apply plugin: 'com.android.application'

android { 
    compileSdkVersion 22 
    buildToolsVersion "22.0.1" 

    defaultConfig { 
        applicationId "com.example.testing.testingexample" 
        minSdkVersion 15 
        targetSdkVersion 22 
        versionCode 1 
        versionName "1.0" 

        //ADD THIS LINE: 
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 

    buildTypes { 
        release { 
            minifyEnabled false 
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
        } 
    }

    //ADD THESE LINES: 
    packagingOptions { 
        exclude 'LICENSE.txt' 
    }
}

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:22.0.0' //← MAKE SURE IT’S 22.0.0     
    testCompile 'junit:junit:4.12' 

    //ADD THESE LINES: 
    androidTestCompile 'com.android.support.test:runner:0.2' 
    androidTestCompile 'com.android.support.test:rules:0.2' 
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.1'
}

重要:由于部分借助版本冲突,你得肯定com.android.support:appcompat-v7库房的版本号是22.0.0,像面的代码有一样。另外,Android
Studio可能会见提示你Build Tools 22.0.1莫装。你应该受修复建议,Studio会为卿安装Build
Tools或者当build.gradle中拿当时行修改成已经安装在您电脑的版。

地方的办事到位后,在Build Variants窗口内切换成Android
Instrumentation Tests
,你的工程应自行同步。如果没有,点击Gradle
sync
按钮。


<a id=”7″>.</a>

8.创办并运行Espresso测试

每当工程的共同体视图上,找到以(androidTest)后缀结尾的包名并创造一个新的Java类。可以用她定名为MainActivityInstrumentationTest,将如下代码粘贴过去。

*** MainActivityInstrumentationTest.java*

package com.example.testing.testingexample;

import android.support.test.InstrumentationRegistry;
import android.support.test.espresso.action.ViewActions;
import android.support.test.rule.ActivityTestRule;
import android.support.test.runner.AndroidJUnit4;
import android.test.ActivityInstrumentationTestCase2;
import android.test.suitebuilder.annotation.LargeTest;

import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;

import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.action.ViewActions.click;
import static android.support.test.espresso.action.ViewActions.closeSoftKeyboard;
import static android.support.test.espresso.action.ViewActions.typeText;
import static android.support.test.espresso.assertion.ViewAssertions.matches;
import static android.support.test.espresso.matcher.ViewMatchers.withId;
import static android.support.test.espresso.matcher.ViewMatchers.withText;

@RunWith(AndroidJUnit4.class)
@LargeTest
public class MainActivityInstrumentationTest {

    private static final String STRING_TO_BE_TYPED = "Peter";

    @Rule
    public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<>(
        MainActivity.class);

    @Test
    public void sayHello(){
        onView(withId(R.id.editText)).perform(typeText(STRING_TO_BE_TYPED), closeSoftKeyboard()); //line 1

        onView(withText("Say hello!")).perform(click()); //line 2

        String expectedText = "Hello, " + STRING_TO_BE_TYPED + "!";
        onView(withId(R.id.textView)).check(matches(withText(expectedText))); //line 3
    }

}

365体育网站测试类通过AndroidJUnitRunner运行,并执行sayHello()艺术。下面将逐行解释都开了呀:

  • 1.首先,找到ID为editText的view,输入Peter,然后倒闭键盘;
  • 2.接下来,点击Say hello!的View,我们从不当布局之XML中也这Button设置id,因此,通过搜索它点的仿来找到其;
  • 3.最后,将TextView直达之文件和预期结果相比,如果同则测试通过;

而啊得右键点击域名运行测试,选择Run>MainActivityInstrume…(第二只带Android图标的)

如此这般就是会在模拟器或者连续的装备及运行测试,你得以大哥大屏幕及看看让执行的动作(比如当EditText及打字)。最后会以Android
Studio输出通过与失败的测试结果。

Github下充斥测试源码


7.为app添加简单的相互

于用Espresso进行UI测试前,让咱们啊app添加一些Views和概括的竞相。我们下一个用户可以输入名字的EditText,欢迎用户之Button和用于出口的TextView。打开res/layout/activity_main.xml,粘贴如下代码:
activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity"> 

    <TextView android:id="@+id/textView" 
        android:text="@string/hello_world" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" /> 

    <EditText android:hint="Enter your name here" 
        android:id="@+id/editText" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_below="@+id/textView"/> 

    <Button android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:text="Say hello!" 
        android:layout_below="@+id/editText" 
        android:onClick="sayHello"/>
</RelativeLayout>

还用以MainActivity.java中添加onClick handler:

MainActivity.java

public void sayHello(View v){ 
    TextView textView = (TextView) findViewById(R.id.textView); 
    EditText editText = (EditText) findViewById(R.id.editText); 
    textView.setText("Hello, " + editText.getText().toString() + "!");
}

今好运行app并认可一切工作正常化。在点击Run按钮前,确认你的Run
Configuration
没有装为运行测试。如用改变,点击下拉选项,选择app


<a id=”8″>.</a>

9.祝贺

咱想你可知欣赏本篇教程,并且开始下手测试你的应用程序。接着你得上如下内容:

  • 叩问又多关于单元测试和instrumentation测试的区别;

  • 了解再多关于设置Android Testing Support
    Library;

  • 顾下面非常硬的有关Android Studio的视频:

    • Introduction to Android
      Studio
    • Introducing Gradle (Ep 2, Android
      Studio)
    • Layout Editor (Ep 3, Android
      Studio)
    • Debugging and testing in Android Studio (Ep 4, Android
      Studio)
  • 在Github下充斥Google测试示例代码

(完)

8.创办并运行Espresso测试

当工程的整视图上,找到以(androidTest)后缀结尾的包名并创建一个新的Java类。可以将它定名为MainActivityInstrumentationTest,将如下代码粘贴过去。

*** MainActivityInstrumentationTest.java*

package com.example.testing.testingexample;

import android.support.test.InstrumentationRegistry;
import android.support.test.espresso.action.ViewActions;
import android.support.test.rule.ActivityTestRule;
import android.support.test.runner.AndroidJUnit4;
import android.test.ActivityInstrumentationTestCase2;
import android.test.suitebuilder.annotation.LargeTest;

import org.junit.After;import org.junit.Before;
import org.junit.Rule;import org.junit.Test;
import org.junit.runner.RunWith;

import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.action.ViewActions.click;
import static android.support.test.espresso.action.ViewActions.closeSoftKeyboard;
import static android.support.test.espresso.action.ViewActions.typeText;
import static android.support.test.espresso.assertion.ViewAssertions.matches;
import static android.support.test.espresso.matcher.ViewMatchers.withId;
import static android.support.test.espresso.matcher.ViewMatchers.withText;

@RunWith(AndroidJUnit4.class)
@LargeTest
public class MainActivityInstrumentationTest { 
    private static final String STRING_TO_BE_TYPED = "Peter"; 

    @Rule 
    public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<>(MainActivity.class); 

    @Test 
    public void sayHello(){ 
        onView(withId(R.id.editText)).perform(typeText(STRING_TO_BE_TYPED), closeSoftKeyboard()); //line 1 

        onView(withText("Say hello!")).perform(click()); //line 2 

        String expectedText = "Hello, " + STRING_TO_BE_TYPED + "!"; 
        onView(withId(R.id.textView)).check(matches(withText(expectedText))); //line 3 
    }
}

测试类通过AndroidJUnitRunner运行,并执行sayHello()方式。下面用逐行解释都举行了啊:

  • 1.首先,找到ID为editText的view,输入Peter,然后关门键盘;
  • 2.接下来,点击Say hello!的View,我们没在布局之XML中呢是Button设置id,因此,通过查找它点的仿来找到其;
  • 3.最后,将TextView落得的文本和预期结果相比,如果相同则测试通过;

你啊得右键点击域名运行测试,选择Run>MainActivityInstrume…(第二单带Android图标的)

这般就算会以模拟器或者连续的配备上运行测试,你可于大哥大屏幕上收看给实施之动作(比如以EditText上打字)。最后见面当Android
Studio输出通过与黄的测试结果。

Github下充斥测试源码


<a id=”9″>.</a>

9.祝贺

咱们想你可知好本篇教程,并且开始动手测试你的应用程序。接着你可以上如下内容:

  • 叩问又多关于单元测试和instrumentation测试的分;

  • 了解再多关于设置Android Testing Support
    Library;

  • 看下面非常过硬的有关Android Studio的视频:

    • Introduction to Android
      Studio
    • Introducing Gradle (Ep 2, Android
      Studio)
    • Layout Editor (Ep 3, Android
      Studio)
    • Debugging and testing in Android Studio (Ep 4, Android
      Studio)
  • 在Github下充斥Google测试示例代码

(完)

相关文章