Test

使用Robolectric+Assertj+PowerMock搭建 Android 的逻辑测试环境

编写 build.gradle 文件

dependencies {
    //  Robolectric
    testCompile "org.robolectric:robolectric:3.0"
    
    //  AssertJ 
    testCompile 'com.squareup.assertj:assertj-android:1.1.0'

    //  PowerMock + Mockito
    testCompile 'org.powermock:powermock-module-junit4:1.6.2'
    testCompile "org.powermock:powermock-module-junit4-rule:1.6.2"
    testCompile 'org.powermock:powermock-api-mockito:1.6.2'
    testCompile "org.powermock:powermock-classloading-xstream:1.6.2"
}

使用Espresso+Assertj+Mockito搭建Android的UI测试环境

编写 build.gradle 文件

android {
    packagingOptions {
        exclude 'LICENSE.txt'
        exclude 'LICENSE'
        exclude 'NOTICE'
        exclude 'asm-license.txt'
    }
    defaultConfig {
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
}

dependencies {
    androidTestCompile 'com.squareup.assertj:assertj-android:1.1.0'
    androidTestCompile 'com.android.support.test:runner:0.3'
    androidTestCompile 'com.android.support.test:rules:0.3'
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2'

    androidTestCompile 'org.mockito:mockito-core:1.9.5'
    androidTestCompile 'com.google.dexmaker:dexmaker:1.2'
    androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.2'
}

Android测试环境选型

Android 测试工具

分类

Android测试按测试范围通常可以分为两种:Logic Test和 UI Test,前者用于测试各种逻辑是否正常执行,很多情况下无需调用Android的api,后者用于测试UI控件的动作响应是否如预期。

按照测试手段也可以分为两种:Local Test 和 Instrument Test,前者指的是使用JVM直接进行本地测试,通常来说效率要高出不少,后者又称为Connected Test,需要连接模拟器或者才能进行测试。Local Test 的测试代码通常放在 src/test 目录,且依赖使用 testCompile声明,Instrument Test 的测试代码通常放在 src/androidTes目录,且依赖使用 androidTestCompile 声明。