2015年5月23日 星期六

Android 開發 (八十八) 使用AndroidJUnitRunner


android最近新增了

AndroidJUnitRunner


  • 能夠run JUnit3 and JUnit4的 test
  • 能夠做test filtering SmallTest MediumTest LargeTest
  • Activity /Application Life cycle Monitoring
今天會介紹如何使用AndroidJUnitRunner寫test case
defaultConfig {
        applicationId "com.androidtestcase"
        minSdkVersion 14
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

android {
    packagingOptions {
        exclude 'LICENSE.txt'
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.0.0'
    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'
}
主要要加的地方有 packagingOptions那段
還有androidTestCompile那些code
接著就寫一個簡單的test吧,如下

@RunWith(AndroidJUnit4.class)
@SmallTest
public class testMyMethod {
    @Test
    public void test(){
        MyMethod m = new MyMethod();
        Assert.assertEquals(m.getData(),"data1");
    }
}


你只需這樣寫就能夠寫出一個簡單的測試
其中 SmallTest代表test 的size ,目前有分 small / medium/ large
想要測試smallTest 你可以先使用以下cmd


adb shell pm list instrumentation
他會列出test list 如下
instrumentation:com.androidtestcase.test/android.support.test.runner.AndroidJUnitRunner (target=com.androidtestcase)

例如我的package name為 com.androidtestcase 則我必須下cmd
adb shell am instrument -w -e size small com.androidtestcase.test/android.support.test.runner.AndroidJUnitRunner

這樣就只會測small的test case
可以依照需求,測試我想測的case


接著下面介紹了如何取得test case 的report

在console下command

./gradlew connectedAndroidTest
就可以得到test 的xml格式report



在console下command
./gradlew test
就可以得到html格式的report


xml格式的report比較適合在CI裡面使用,html格式的比較適合個人觀看用


結論
目前我使用新的AndroidJUnitRunner純粹是為了可以filter test size
當我只想做快速的unit test 的時候就不再需要重新跑一次所有的 ui test 囉!!

沒有留言:

張貼留言