美文网首页计算机语言
Android仪器化测试

Android仪器化测试

作者: Sharkchilli | 来源:发表于2021-06-12 13:48 被阅读0次

    前言

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

    相关文章

      网友评论

        本文标题:Android仪器化测试

        本文链接:https://www.haomeiwen.com/subject/eaxieltx.html