前言
单元测试这些在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已经帮我们安装了两个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。当没有这个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
网友评论