Android仪器化测试

时间:2021-7-20 作者:qvyue

前言

单元测试这些在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

Android仪器化测试
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] /
adb shell am instrument -w -m -e debug false -e class 'com.shark.uiautoapitest.Stub' com.shark.uiautoapitest.test
/androidx.test.runner.AndroidJUnitRunner
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。