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后面跟的参数表示外循环次数)