目录

  • 单元测试

  • UI 测试

原文链接: Unit and UI Testing in Android Studio

2. UI 测试

  • 配置

  • 编码

  • 测试

2.1 配置

2.1.1 IDE 配置
Build Variants => Test Artifact => Android Instrumentation Tests

2.1.2 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,像上面的代码片段一样。

2.2 编码

2.2.1 为 app 添加交互

activity_main.xml

            

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() + "!");}

2.2.2 编写测试

androidTest 包中新建测试类
MainActivityInstrumentationTest.java

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)@LargeTestpublic class MainActivityInstrumentationTest {    private static final String STRING_TO_BE_TYPED = "Peter";    @Rule    public ActivityTestRule 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    }}

2.3 进行测试

测试文件上点右键 Run 测试就可以了。
稍后会看到手机自动运行 app,并按照测试代码中写的进行自动测试。

2.4 测试结果

更多相关文章

  1. Android——控制UI界面
  2. Android自学笔记(番外篇):全面搭建Linux环境(八)——AOSP参与者工作流
  3. Android(安卓)flutter http请求
  4. Android(安卓)广播(Android(安卓)10)
  5. Android流量统计代码
  6. android代码实现布局方式-在输入框中最右边存在一个图片
  7. android 学习笔记
  8. Best practices in Android(安卓)development
  9. Android的本地网络组件

随机推荐

  1. Android(安卓)Activity与Service数据交互
  2. android里的style
  3. android开发--界面的布局
  4. Android调用系统关机与重启功能
  5. 适用于android的OpenSL ES指南-面向Andro
  6. android 休眠的体制
  7. 【转】Android数字证书
  8. Android(安卓)Studio 常见 Build 问题 Er
  9. Android Dependency Injection Libraries
  10. android 面试相关资料