android測試工具MonkeyRunner--google官網翻譯

來源:互聯網
上載者:User

標籤:var   help   tle   star   apk   dev   examples   變數   語句   

近期在複習之前的筆記,在回想MonkeyRunner時看了看google官網的內容,寫得不錯。就翻譯出來分享下。事實上google官網真是一個學習的好地方。

基礎知識

MonkeyRunner工具提供了一個API用於在Android代碼之外控制Android裝置和模擬器。通過MonkeyRunner。您能夠寫出一個Python程式去安裝一個Android應用程式或測試包。執行它,向它發送類比擊鍵。截取它的使用者介面圖片。並將儲存於工作站上。monkeyrunner工具的主要設計目的是用於測試功能/架構水平上的應用程式和裝置,或用於執行單元測試套件,但您當然也能夠將其用於其他目的。


MonkeyRunner工具與monkey工具並無關聯。

monkey工具直接執行在裝置或模擬器的adbshell中。產生使用者或系統的偽隨機事件流。而MonkeyRunner工具則是在工作站上通過API定義的特定命令和事件控制裝置或模擬器。
MonkeyRunner工具為Android測試提供了下面特性:

  • 多裝置控制:MonkeyRunner的API能夠跨多個裝置或模擬器實施測試套件。您能夠在同一時間接上所有的裝置。也能夠一次啟動所有模擬器,根據程式來依次串連到每一個裝置。然後執行一個或多個測試。您也能夠用程式啟動一個配置好的模擬器,執行一個或多個測試。

  • 功能測試:MonkeyRunner能夠為一個應用自己主動貫徹一次功能測試。您提供按鍵或觸摸事件的輸入數值,然後觀察輸出結果的截屏。

  • 迴歸測試:MonkeyRunner能夠執行某個應用,並將其結果截屏與既定已知正確的結果截屏相比較,以此測試應用的穩定性。

  • 可擴充的自己主動化:由於MonkeyRunner是一個API工具包,您能夠基於Python模組和程式開發一整套系統。以此來控制Android裝置。

    除了使用MonkeyRunner的API之外。您還能夠使用標準的Python os和subprocess模組來調用如adb這種Android工具。

您還能夠向MonkeyRunnerAPI中加入您自己的類。我們將在後面會對此進行具體討論。
MonkeyRunner工具使用Jython(使用Java程式設計語言的一種Python實現)。Jython同意MonkeyRunner API與Android架構輕鬆的進行互動。

使用Jython。您能夠使用Python文法來擷取API中的常量、類以及方法。

一個簡單的MonkeyRunner程式執行個體

下面為一個簡單的MonkeyRunner程式,它將會串連到一個裝置,建立一個MonkeyDevice對象。使用MonkeyDevice對象。程式將安裝一個Android應用程式套件,執行當中一個活動,並向其發送按鍵事件。

程式接下來會將結果。建立一個MonkeyImage對象,並使用這個對象將儲存至.png檔案。

# 匯入此程式所需的MonkeyRunner模組 from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice # 串連當前裝置,返回一個MonkeyDevice對象 device = MonkeyRunner.waitForConnection() # 安裝Android包,注意,此方法返回的傳回值為boolean,由此您能夠推斷安裝過程是否正常 device.installPackage(‘myproject/bin/MyApplication.apk‘) # 執行此應用中的一個活動 device.startActivity(component=‘com.example.android.myapplication.MainActivity‘) # 按下菜單按鍵 device.press(‘KEYCODE_MENU‘,‘DOWN_AND_UP‘) # 截取螢幕 result = device.takeSnapShot# 將儲存至檔案 result.writeToFile(‘myproject/shot1.png‘,‘png‘)
MonkeyRunner 的API

MonkeyRunner 在com.android.monkeyrunner包中總共包括三個模組:

  • MonkeyRunner:一個為monkeyrunner程式提供工具方法的類。這個類提供了用於串連monkeyrunner至裝置或模擬器的方法。它還提供了用於建立一個monkeyrunner程式的使用者介面以及顯示內建協助的方法。

  • MonkeyDevice :表示一個裝置或模擬器。這個類提供了安裝和卸載程式包、啟動一個活動以及發送鍵盤或觸摸事件到應用程式的方法。

    您也能夠用這個類來執行測試包。

  • MonkeyImage :表示一個對象。這個類提供了、將位元影像轉換成各種格式、比較兩個MonkeyImage對象以及寫映像到檔案的方法。

在python程式中。您將以Python模組的形式使用這些類。monkeyrunner工具不會自己主動匯入這些模組。您必須使用相似例如以下的from語句:

  fromcom.android.monkeyrunner import

當中。為您想要匯入的類名。您能夠在一個from語句中匯入超過一個模組。其間以逗號分隔。

執行MonkeyRunner

您能夠直接使用一個代碼檔案執行MonkeyRunner,抑或在互動式對話中輸入MonkeyRunner語句。不論使用哪種方式,您都須要調用SDK檔案夾的tools子檔案夾下的MonkeyRunner命令。

假設您提供一個檔案名稱作為執行參數。則MonkeyRunner將視檔案內容為Python程式,並加以執行;否則。它將提供一個互動對話環境。
MonkeyRunner命令的文法為:

monkeyrunner -plugin  <程式檔案名稱> <程式選項>
  • -plugin : (可選)指定一個內含MonkeyRunner外掛程式的.jar檔案。欲瞭解很多其他關於monkeyrunner外掛程式的內容。參考下文。要指定多個檔案。能夠多次使用此參數。

  • <程式檔案名稱>: 假設您指定此參數,MonkeyRunner將視檔案內容為Python程式並予以執行。

    假設此參數未予指定,則開啟一個互動式會話。

  • <程式選項>:(可選)<程式檔案名稱>中所指定的程式所需的參數。

MonkeyRunner提供協助

您能夠用下面命令來產生monkeyrunner的API參考:

monkeyrunner  help.py 

參數說明:
能夠為text或html。分別代表純文字和HTML輸出。
指定了輸出檔案的全路徑名稱。

使用外掛程式擴充MonkeyRunner

您能夠用Java語言建立新的類,並打包成一個或多個.jar檔案。以此來擴充 MonkeyRunner API。

您能夠使用您自己寫的類或者繼承現有的類來擴充MonkeyRunner API。

您還能夠使用此功能來初始化MonkeyRunner環境。


為了使MonkeyRunner載入一個外掛程式。您應當如使用如前面所述的-plugin參數來調用MonkeyRunner命令。

在您編寫的外掛程式中,您能夠匯入或繼承位於com.android.monkeyrunner包中的幾個基本的monkeyrunner類:MonkeyDevice, MonkeyImage和MonkeyRunner。

請注意。外掛程式無法讓你訪問Android的SDK。您不能匯入com.android.app等包。這是由於monkeyrunner是在架構API層次之下與裝置或模擬器進行互動的。

外掛程式啟動類

用於外掛程式的.jar檔案能夠指定一個類,使其在指令碼執行之前就執行個體化。如欲指定這個類,您須要在.jar檔案的manifest中加入鍵 MonkeyRunnerStartupRunner。

其值為啟動時執行的類的名稱。

下面程式碼片段顯示了怎樣在一個ant構建指令碼達到這種目的:

<jar jarfile="myplugin" basedir="${build.dir}"><manifest><attribute name="MonkeyRunnerStartupRunner" value="com.myapp.myplugin"/></manifest></jar>

如欲訪問MonkeyRunner的執行時環境,啟動類能夠實現com.google.common.base.Predicate。

比如,用這個類在預設的命名空間中設定一些變數:

package com.android.example; import com.google.common.base.Predicate; import org.python.util.PythonInterpreter; public class Main implements Predicate {     @Override     public boolean apply(PythonInterpreter anInterpreter) {         /*         * Examples of creating and initializing variables in the monkeyrunner environment‘s         * namespace. During execution, the monkeyrunner program can refer to the variables "newtest"         * and "use_emulator"         *         */         anInterpreter.set("newtest", "enabled");         anInterpreter.set("use_emulator", 1);         return true;     } }

MonkeyRunner到此翻譯完,用好自己主動化測試架構對android開發有非常大協助。

android測試工具MonkeyRunner--google官網翻譯

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.