1. 程式人生 > >UiAutomator2.0的四種離線方式

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後面跟的引數表示外迴圈次數)