UiAutomator2.0的四種離線方式
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後面跟的引數表示外迴圈次數)