UiAutomator2.0的四种脱机方式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hzk594512323/article/details/82803452

Uiautomator2.0拥有多用例需要集成测试的情况下,我们往往需要考虑如何脱机运行多用例

1、手机root,并开发对应app,由app执行调起U2的多命令来实现

2、取得手机rom的系统签名,并给调起命令的app进行签名后,由app执行调起U2的多命令来实现

如果以上两种方式不可行的情况下,请博友们往下看:

3、一个测试class集成多class中的测试方法,调起命令为一个命令,但执行的是多个class的test方法。

类似于以下这种模式:

@Test
public void testCase() {
    DemoTest_01.testCase();
    DemoTest_02.testCase();
    DemoTest_03.testCase();
    DemoTest_04.testCase();
    DemoTest_05.testCase();
    DemoTest_06.testCase();
    DemoTest_07.testCase();
    DemoTest_08.testCase();
    DemoTest_09.testCase();
    DemoTest_10.testCase();
}

需要注意的是:这种模式下,代码的抛出的异常需要自己try-catch处理掉,不能直接throws出去让JVM catch,否则会中断,从而影响后面用例的执行。

PS:这种方式调起命令,随后移除USB线,部分厂商的机型可能会立刻断掉测试哦。

4、使用Monkey -f 命令来调起。这种调起后,因为调起者为Monkey,所以没有uiautomator进程。

Monkey 的 -f 命令,原本是用来执行monkey的shell脚本,这个脚本中可以模拟用户键盘输入、屏幕操作、等待、执行命令、等等,在这里不做赘述。

这里我们主要是拿到这个shell脚本中的执行命令来实现U2的多case调起。

第一步:新建一个demo.txt文件:

文件中输入以下内容:

type = raw events 
count = 1 
speed = 1.0 
start data >> 
RunCmd(am instrument -w -r   -e debug false -e class com.testcase.debug.Debug1 com.testcase.test/android.support.test.runner.AndroidJUnitRunner)
RunCmd(am instrument -w -r   -e debug false -e class com.testcase.debug.Debug2 com.testcase.test/android.support.test.runner.AndroidJUnitRunner)
RunCmd(am instrument -w -r   -e debug false -e class com.testcase.debug.Debug3 com.testcase.test/android.support.test.runner.AndroidJUnitRunner)

第二步:保存txt文件,并将demo.txt文件push到手机端/data/local/tmp

push命令:adb push %CD%/demo.txt /data/local/tmp

第三步:使用Monkey -f 命令来执行这个txt脚本。

monkey命令:adb shell monkey -f /data/local/tmp/demo.txt -v 2 --ignore carshed 

(ps:Monkey命令中,-v后面跟的参数表示外循环次数)

猜你喜欢

转载自blog.csdn.net/hzk594512323/article/details/82803452