Android App開發的自動化測試架構UI Automator使用教程_Android

來源:互聯網
上載者:User

Android的自動化測試有很多架構,其中ui automator是google官方提供的黑盒UI相關的自動化測試載入器,(GitHub首頁:case使用java寫,今天實踐了一下官方文檔中範例程式,其中還是有一些小問題需要總結一下的。
環境準備:
1.JDK(是的,你沒看錯,基礎的android開發環境必備),以及對應的環境變數配置,不會的可以自己百度下下
2.Android Studio(IDE尊崇個人意願)
3.android SDK以及配置
4.ANT(主要用於build我們的指令碼,產生jar包)
ant的搭建主要分幾步:
1.下載ant安裝檔案並且解壓安裝;
2.建立系統內容變數ANT_HOME,參數值是你的ant安裝目錄;
3.在Path環境變數中添加ant安裝目錄的bin檔案夾,比如我的就是C:\cod\apache-ant-1.9.6\bin
4.配置完以後,測試一下,在命令列下輸入ant -version,如果顯示你所安裝的ant版本資訊,證明環境變數配置成功

使用流程
1、使用ADT建立一個java的項目
在建立項目的時候要加上JUnit與你使用的Android platforms中對應的android.jar與uiautomator.jar

2、建立一個包(我這裡就只叫com)
3、再這個包下建立一個class,輸入以下java代碼,代碼全是官方文檔上的代碼,除了最上面的package

package com;import com.android.uiautomator.core.UiObject;import com.android.uiautomator.core.UiObjectNotFoundException;import com.android.uiautomator.core.UiScrollable;import com.android.uiautomator.core.UiSelector;import com.android.uiautomator.testrunner.UiAutomatorTestCase;public class Runer extends UiAutomatorTestCase {    public void testDemo() throws UiObjectNotFoundException {        // Simulate a short press on the HOME button.   getUiDevice().pressHome();      // We're now in the home screen. Next, we want to simulate    // a user bringing up the All Apps screen.   // If you use the uiautomatorviewer tool to capture a snapshot    // of the Home screen, notice that the All Apps button's    // content-description property has the value “Apps”. We can    // use this property to create a UiSelector to find the button.    UiObject allAppsButton = new UiObject(new UiSelector()     .description("Apps"));      // Simulate a click to bring up the All Apps screen.   allAppsButton.clickAndWaitForNewWindow();      // In the All Apps screen, the Settings app is located in    // the Apps tab. To simulate the user bringing up the Apps tab,   // we create a UiSelector to find a tab with the text    // label “Apps”.   UiObject appsTab = new UiObject(new UiSelector()     .text("Apps"));      // Simulate a click to enter the Apps tab.   appsTab.click();   // Next, in the apps tabs, we can simulate a user swiping until   // they come to the Settings app icon. Since the container view    // is scrollable, we can use a UiScrollable object.   UiScrollable appViews = new UiScrollable(new UiSelector()     .scrollable(true));      // Set the swiping mode to horizontal (the default is vertical)   appViews.setAsHorizontalList();      // Create a UiSelector to find the Settings app and simulate      // a user click to launch the app.    UiObject settingsApp = appViews.getChildByText(new UiSelector()     .className(android.widget.TextView.class.getName()),      "Settings");   settingsApp.clickAndWaitForNewWindow();      // Validate that the package name is the expected one   UiObject settingsValidation = new UiObject(new UiSelector()     .packageName("com.android.settings"));   assertTrue("Unable to detect Settings",      settingsValidation.exists());    UiObject reportBug = new UiObject(new UiSelector().text("Sound"));   reportBug.clickAndWaitForNewWindow();   UiObject soundValidation = new UiObject(new UiSelector()   .text("Volumes"));  assertTrue("Unable to detect Sound",       soundValidation.exists());       getUiDevice().pressHome();    }  }
4、使用ant工具產生build.xml
我這裡在使用ADT自已的ant外掛程式時提示
build.xml:26: Class not found: javac1.8

網上查了查,是外掛程式與我java環境不符,下載最新的ant外掛程式就可以了http://ant.apache.org/bindownload.cgi

下載這個tar.gz包,解壓,然後將apache-ant-1.9.4\bin目錄添加到環境變數PATH中
然後cmd到android sdk的tools目錄,使用andrlid list命令,記住你將要在模擬器中啟動並執行(也是你剛剛匯入android.jar與uiautomator.jar包時所在的platforms)
在cmd下使用

android create uitest-project -n <name> -t <android-sdk-ID> -p <path>

-n 為產生的jar包名稱,自已任意定義,
-t 為上面查看到的值,我這裡是1
-p 為輸出路徑,這裡就是剛才建立的java項目所在的路徑

android create uitest-project -n AutoRunner -t 1 -p D:\myAndroidStudy\androidTest

然後再cmd進入D:\myAndroidStudy\androidTest,使用ant build命令產生AutoRunner.jar檔案
5、將這個AutoRunner.jar檔案push到模擬器中

adb push AutoRunner.jar /data/local/tmp

6、使用

adb shell uiautomator runtest AutoRunner.jar –c com.Runer 

使Runer類運行

My Code裡又在官方基礎上多了一個點擊”sound”的操作與點擊Home鍵操作

 UiObject reportBug = new UiObject(new UiSelector().text("Sound"));   reportBug.clickAndWaitForNewWindow();   UiObject soundValidation = new UiObject(new UiSelector()   .text("Volumes"));  assertTrue("Unable to detect Sound",       soundValidation.exists());       getUiDevice().pressHome(); image

這個其實也只是一個簡單的玩具代碼,沒有什麼意義,但是官方作為一個引導,其中也使用了一些最常見的介面。以後再深入的學習uiautomator

總結
優點:
1.可以對所有操作進行自動化,操作簡單;
2.不需要對被測程式進行重簽名,且,可以測試所有裝置上的程式,比如~某APP,比如~撥號,比如~發資訊等等
3.對於控制項定位,要比robotium簡單一點點
缺點:
1.uiautomator需要android level 16以上才可以使用,因為在level 16及以上的API裡面才帶有uiautomator工具
2.如果想要使用resource-id定位控制項,則需要level 18及以上才可以
3.對中文支援不好(不代表不支援,第三方jar可以實現)
4.個人感覺,控制項定位不如robotium那樣層級分明,僅僅個人感覺,使用者行為注入還是和插樁有點點區別的

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.