Android UiAutomator 自動化測試,如何單獨執行指定的 test case ?
當我們寫好 Android UiAutomator 自動化測試的測試案例 (test case) 後,要執行寫好的 test case 會透過下面的指令來執行。
1
|
adb shell uiautomator runtest [jar 檔名稱] –c [完整的 package 與 class 名稱]
|
我們需要指定要跑的測試案例的完整 package 與 class 名稱來執行,舉個例子來說,如果我們寫好的 test case 程式碼如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
package
com.autotest;
import
com.android.uiautomator.testrunner.UiAutomatorTestCase;
public
class
UiAutoTest
extends
UiAutomatorTestCase {
public
void
test1() {
System.out.println(
"Run test case 1"
);
}
public
void
test2() {
System.out.println(
"Run test case 2"
);
}
}
|
我們可以看到第 1 行的程式碼說明 package 名稱為 com.autotest,而 class 名稱在第 5 行,可看到是 UiAutoTest,所以我們在 -c 的參數要帶入 com.autotest.UiAutoTest,所需執行的指令如下所示:
1
|
adb shell uiautomator runtest [jar 檔名稱] –c com.autotest.UiAutoTest
|
但有時我們寫好的測試案例,卻只想單獨跑一個 test case 時我們該怎麼辦呢 ?
一開始可能會想到,那不就把要想執行的 test case 先把它註解起來不就好了嗎 ?
將程式碼註解起來是可以解決此問題,但如果裡面有很多 test case 就需要註解掉很多 test case,接著再跑 test case 就可以單獨只跑我們想執行的 test case,但是跑完後又要把剛才所註解的測試程式碼解開註解,執行上就有一點麻煩。
那我們可能又會再想到在不想被執行的測試案例前加上 @Ignore 標籤來略過不想執行的 test case,但此錯法也差不多跟註解起來的做法差不多,測完我們想要指定的 test case 後又要一一的把其他 test case 的 @Ignore 標籤拿掉。
其實我們可以不用動到測試的程式碼就可以做到單獨跑一個 test case 的測試,我們只要在 run test case 下的指令中的 -c 參數多帶入要執行的 test case 名稱就可解決此問題,例如我們想單獨執行 test1() 這個測試,只要在 -c 參數修正成 com.autotest.UiAutoTest#test1,就可以單獨跑我們指定的測試案例, 這樣就完全不用再動到測試的程式碼。