轉載自:http://blog.csdn.net/huiguixian/article/details/22398193
Android測試工具中,Monkey Runner只要簡單幾個指令即可,但他的侷限性在於都是基於畫素位置操作,不具備移植性。
而採用uiautomator編寫的自動化測試工具則可以實現基於UiSelector選擇直接操作uiObject來編寫基於屬性操作具備移植性的測試。
注:
android官方給出的版本條件如下,若低於這些版本請先下載新版本
Android SDK Tools, Revision 21 or higher
Android SDK Platform, API 16 or higher
1. 首先我們先了解一下屬性操作,並用uiautomatorviewer來分析一下應用UI元件。
工具路徑:<android-sdk>/tools/.
左邊為當前截圖,移動到上面有個紅色的懸浮框表示當前選中節點,當前選中的會在右上角藍色高亮,右下角顯示即是此view的屬性。
至於這些有什麼作用,稍後我們再看(請注意content-desc屬性,我們稍後會用)。
2. 開啟eclipse,新建立一個Java Project,我這裡建立的是MessageTestCase
2.1 之後右鍵專案Property->Java Build Path->Libraries->Add Library->JUnit->JUnit3->Finish
2.2 回到Property介面後還是選擇Libraries->Add External JARs->選擇Android SDK路徑\platforms\android-**->選中Android.java和uiautomator.jar
2.3 之後點選ok,關閉Property視窗
3. 之後我們編輯code完成操作,主要操作是進入簡訊介面,編輯一條hello world
//所有UI自動測試都要繼承UiAutomatorTestCase
public class MessageTestCase extends UiAutomatorTestCase {
public void testDemo() throws UiObjectNotFoundException{
//獲取UiDevice物件
UiDevice device = getUiDevice();
//點選home鍵操作
device.pressHome();
//如截圖中提到的,我們使用content-desc屬性Apps選擇所有應用列表
UiObject appsTab = new UiObject(new UiSelector().description("Apps"));
appsTab.click();
//因為簡訊介面在第二個列表頁面,所以我們可以先滑動一下
//通過scrollable屬性來選定滑動view
UiScrollable appViews = new UiScrollable(new UiSelector().scrollable(true));
appViews.setAsHorizontalList();
appViews.scrollForward();
//通過類名和Text找到簡訊應用圖示,Text獲取通過uiautomatorviewer
UiObject messageApp = appViews.getChildByText(new UiSelector().className(android.widget.TextView.class.getName()), "Messaging");
//點選並等待開啟簡訊應用
messageApp.clickAndWaitForNewWindow();
//選擇新建簡訊
UiObject newMessage = new UiObject(new UiSelector().description("New message"));
newMessage.click();
//選擇編輯資訊
UiObject editMessage = new UiObject(new UiSelector().text("Type text message"));
editMessage.click();
editMessage.setText("hello world!");
}
}
4. 然後編譯和釋出uiautomator測試
4.1 進入sdk tools目錄使用如下命令:
android.bat create uitest-project -n MessageTestCase -t 1 -p "C:\Documents and Settings\***\workspace\MessageTestCase"
其中MessageTestCase是工程名,第二個路徑是工程所在路徑
然後會在工程所在路徑生成一個build.xml檔案
4.2 使用如下命令設定Android Home
set ANDROID_HOME=<path_to_your_sdk>
4.3 然後需要下載ant,並設定ant為環境變數(也可以不設定,不過使用這個命令前加上路徑)
首先切換路徑到工程所在目錄,然後使用如下命令編譯
apache-ant-1.9.3\bin\ant build
之後在工程的bin目錄下回生成.jar檔案
4.4 push jar檔案到一個目錄,如
adb push <path_to_output_jar> /data/local/tmp
4.5 執行測試
adb shell uiautomator runtest MessageTestCase.jar -c com.wjh.test.MessageTestCase