前言
單元測試這些在Android中都差不多脓规,主要介紹一下儀器化測試,因為UI Automator測試框架是基于instrumentation的API侨舆,運行在Android JunitRunner 之上。所以這里要使用到儀器化測試挨下。
添加依賴
androidTestImplementation 'androidx.annotation:annotation:1.1.0'
androidTestImplementation 'androidx.test:runner:1.3.0'
androidTestImplementation 'androidx.test:rules:1.3.0'
defaultConfig 配置如下
defaultConfig {
applicationId "com.shark.uiautoapitest"
minSdkVersion 19
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
編寫測試類
package com.shark.uiautoapitest;
import android.util.Log;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SdkSuppress;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(AndroidJUnit4.class)
@SdkSuppress(minSdkVersion = 18)
public class Stub {
private final String TAG = "SharkChilli";
@Before
public void setUp() throws Exception {
Log.i(TAG, "setUp");
}
@Test
public void testUIAutomatorStub() {
Log.i(TAG, "testUIAutomatorStub 222222");
}
@After
public void tearDown() {
Log.i(TAG, "tearDown");
}
}
運行
這里運行和單元測試類似直接在方法或者類上右鍵運行即可
2021-06-12 13:43:03.296 20573-20603/com.shark.uiautoapitest I/SharkChilli: setUp
2021-06-12 13:43:03.296 20573-20603/com.shark.uiautoapitest I/SharkChilli: testUIAutomatorStub 222222
2021-06-12 13:43:03.296 20573-20603/com.shark.uiautoapitest I/SharkChilli: tearDown
可以看到編譯為2個apk
image.png
可以使用install命令安裝臭笆,這里運行的過程as已經(jīng)幫我們安裝了兩個app
可以使用:adb shell pm list instrumentation 查看所有的instrumentation
# adb shell pm list instrumentation
instrumentation:com.github.uiautomator.test/androidx.test.runner.AndroidJUnitRunner (target=com.github.uiautomator)
instrumentation:com.shark.uiautoapitest.test/androidx.test.runner.AndroidJUnitRunner (target=com.shark.uiautoapitest)
這里可以看到instrumentation的target具體是哪個app。當(dāng)沒有這個app的時候instrumentation也是無法運行的愁铺。
adb運行instrumentation用例
am instrument [flags] <test_package>/<runner_class>
adb shell am instrument -w -m -e debug false -e class 'com.shark.uiautoapitest.Stub' com.shark.uiautoapitest.test
/androidx.test.runner.AndroidJUnitRunner