安卓Instrumentation Test 笔记(一)

前言


翻译自谷歌官方文档,部分笔记内容加入自己的理解.

Instrumented Tests


Instrumented Test 以apk的形式运行待测app的同一款机器上.系统会在同一个进程中运行待测app和编译出的测试apk.
当你的测试程序需要某些信息(例如宿主app的context上下文环境),或者当它们需要真实的安卓框架组件的时候,可以来构建 Instrumentation Test.使用Instrumentation Test 可以减少编写和维护模拟代码 的工作量,同时如果你需要模拟依赖关系,仍然可以使用 mockito框架.

添加依赖


dependencies {
  androidTestCompile 'com.android.support.test:runner:0.4'
  // Set this dependency to use JUnit 4 rules
  androidTestCompile 'com.android.support.test:rules:0.4'
  // Set this dependency to build and run Espresso tests
  androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
  // Set this dependency to build and run UI Automator tests
  androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2'
}

AndroidJUnitRunner 设置为

android {
    defaultConfig {
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
}

除了上述的依赖以外,还可以选择添加 HamCrest 这个库,使用这个库可以让你更灵活地来插入断言语句.

创建仪器测试类


创建仪器化的 Junit4测试类,首先需要在测试类的定义前添加 @RunWith 注解,然后需要在 build.gradle 中配置 AndroidJunitRunner 为默认的test runner.

    defaultConfig {
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"s

创建测试集合


为了更好地测试执行你的仪器单元测试,你可以对测试类中的测试集合进行分组并且集中运行这些用例.测试集合可以是嵌套的;测试类中可以包含其它的测试集并且运行测试集中的所有用例.
为了方便,测试集的所属的包名通常以 "suite" 结尾.
测试集的基本格式如下,使用 @Suite.SuiteClass() 这个注解,参数为单独的测试类或测试集.

import com.example.android.testing.mysample.CalculatorAddParameterizedTest;
import com.example.android.testing.mysample.CalculatorInstrumentationTest;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;

// Runs all unit tests.
@RunWith(Suite.class)
@Suite.SuiteClasses({CalculatorInstrumentationTest.class,
        CalculatorAddParameterizedTest.class})
public class UnitTestSuite {}

你可能感兴趣的:(安卓Instrumentation Test 笔记(一))