0


adb 命令行执行单元测试

文章目录

1、配置 adb 环境变量

可参考教程:Mac配置ADB环境变量

adb在我们配置 Android Studio 时 安装的 AndroidSDK 的 platformTools 目录中,所以我们首先要找到 adb 所在目录,就在sdk目录下面。在Project Structure中,找到SDK安装路径.

[图片]

ADB的目录就在 上面目录的 platform-tools中

直接终端编辑

bash_profile

文件,配置环境变量

vi ~/.bash_profile

将下面的进行复制粘贴到文件中即可,记得把users/name 中的name改成自己的本机用户名

exportANDROID_HOME=/Users/name/Library/Android/sdk
exportPATH=${PATH}:${ANDROID_HOME}/tools
exportPATH=${PATH}:${ANDROID_HOME}/platform-tools
:wq

进行保存后,输入

source ~/.bash_profile

生效

我们最后输入

adb version

,查看是否有结果,有结果那么此时adb 环境变量配置成功

[图片]

2、adb 执行测试

参考文档:developer.android.com

官方的文档还是看的有点抽象,我们可以自己实践一下。

选择一个单元测试方法,点击绿色的执行测试按钮

[图片]

先使用图形交互点击的方式,执行了一个测试方法,其实就是底层默认启动了一个adb命令。在我们可以看一下,adb书写的参数以及怎么具体执行

[图片]

$ adb shell am instrument -w -m -e debug false -e class ‘com.didi.testcase.basemap.A’ com.didi.mapsdk_base.test/androidx.test.runner.AndroidJUnitRunner

$ adb shell am instrument -w -m -e debug false -e class ‘com.didi.testcase.basemap.TestBaseMapBD#testUiSettingIsCompassEnabled’ com.didi.mapsdk_base.test/androidx.test.runner.AndroidJUnitRunner

我们可以在自己的终端,直接复制上面的adb命令,发现可以进行启动测试方法,从而达到通过命令行的方式完成对单元测试方法的执行.

3、官方文档解读 adb 使用

(1)第一条执行测试的adb命令

文档解说,官方文档中的 adb 使用命令进行解读

[图片]

上面提到,am instrument 测试有几个操作

(1)构建或者重新构建主应用测试软件包

解读:build打包没问题,能编译通过

(2)将APK文件安装到 Android设备中获模拟器上

解读:单元测试的方法肯定依赖于app软件,所以要连接设备后,安装应用软件包和test测试软件包。点击以下gradle命令需要在手机上安装apk包。

[图片]

(3)执行adb命令

adb shell am instrument -w <test_package_name>/<runner_class>

  • 这个命令 <test_package_name>,指的是整个测试包

  • <runner_class>
    

    指的是执行的测试程序类(也就是执行什么测试程序,用

    AndroidJunitRunner
    

    进行测试),一般默认是

    androidx.test.runner.AndroidJUnitRunner
    

    ,我们不需要改动

  • -w 指的是 文档有讲解,就是adb执行测试命令,等测试执行输出完日志后,在退出adb shell状态,保证我们能够看到执行测试的结果

  • 这一整条命令的意思就是 执行整个软件测试包中的所有测试方法

疑问:什么是测试应用Android软件包?

<test_package_name>

,这里提到了一个 测试应用Android软件包,是什么意思呢?

在这里插入图片描述

查看解释发现 Android 软件包就是 applicationId,在 build.gradle 文件中能够找到,然后因为是测试软件包,所以需要在后面再追加一个.test 然后我们就可以定位到手机上测试哪个软件包下的方法了

(2)am instrument 参数

[图片]

文档中列举了一些adb shell am instrument 命令后面的参数,说明用法非常清楚。

这里注意的就是,-e 选项在后面还有很重要的作用

(3)-e 参数 的 key-value键值对

[图片]

文档中列举出了 -e 参数可以 跟的键值对,非常有用,圈住的就是我们正常点击测试执行时要用到的

  • package <package_name>
    

    可以指定执行某个包下的所有测试方法

  • class <class_name> 可以执行执行某个类下的所有测试方法,跟在class_name后面的 #<method_name>可以具体执行每个类中的测试方法

  • debug,是否在调试状态执行

(4)用法用例

文档最后提供了一个实例,我们可以看看,写的很清楚。

如上图,在这里说明项目结构,方便进行填入参数, 给定测试软件包名,测试类、测试方法

[图片]

第一个案例:只指定了测试软件包名,所以执行软件包下的所有测试类

[图片]

第二个案例:使用 -e class 指定了TestClass1测试类,所以执行这个类中的所有测试方法。

[图片]

第三个案例:使用 -e class <class_name>#<method_name>指定了 TestClass1 测试类,TestClass2 中的 testMethod3 方法,执行两块测试内容,中间使用逗号隔开,然后使用AndroidRunner程序类开始执行测试类/方法.

[图片]

4、存在问题

缺点:无法生成测试报告进行查看,无法生成覆盖率统计报告,只能够用例执行而已。还是建议使用 gradle 命令

标签: adb 单元测试

本文转载自: https://blog.csdn.net/rain67/article/details/132176052
版权归原作者 RAIN 7 所有, 如有侵权,请联系我们删除。

“adb 命令行执行单元测试”的评论:

还没有评论