編輯:Android開發實例
正文
monkeyrunner工具提供了一個API,使用此API寫出的程序可以在Android代碼之外控制Android設備和模擬器。通過monkeyrunner,您可以寫出一個Python程序去安裝一個Android應用程序或測試包,運行它,向它發送模擬擊鍵,截取它的用戶界面圖片,並將截圖存儲於工作站上。monkeyrunner工具的主要設計目的是用於測試功能/框架水平上的應用程序和設備,或用於運行單元測試套件,但您當然也可以將其用於其它目的。
monkeyrunner工具與(UI/Application Exerciser Monkey)用戶界面/應用程序測試工具,也稱為monkey工具並無關聯。monkey
工具直接運行在設備或模擬器的adb
shell中,生成用戶或系統的偽隨機事件流。而monkeyrunner工具則是在工作站上通過API定義的特定命令和事件控制設備或模擬器。
monkeyrunner工具為Android測試提供了以下特性:
* 多設備控制:monkeyrunner API可以跨多個設備或模擬器實施測試套件。您可以在同一時間接上所有的設備或一次啟動全部模擬器(或統統一起),依據程序依次連接到每一個,然後運行一個或多個測試。您也可以用程序啟動一個配置好的模擬器,運行一個或多個測試,然後關閉模擬器。
* 功能測試: monkeyrunner可以為一個應用自動貫徹一次功能測試。您提供按鍵或觸摸事件的輸入數值,然後觀察輸出結果的截屏。
* 回歸測試:monkeyrunner可以運行某個應用,並將其結果截屏與既定已知正確的結果截屏相比較,以此測試應用的穩定性。
* 可擴展的自動化:由於monkeyrunner是一個API工具包,您可以基於Python模塊和程序開發一整套系統,以此來控制Android設備。除了使用monkeyrunner API之外,您還可以使用標准的Python os
和subprocess
模塊來調用如Android Debug Bridge這樣的Android工具 。
您還可以向monkeyrunner API中添加您自己的類。我們將在使用插件擴展monkeyrunner一節中對此進行詳細討論 。
monkeyrunner工具使用Jython(使用Java編程語言的一種Python實現)。Jython允許monkeyrunnerAPI與Android框架輕松的進行交互。使用Jython,您可以使用Python語法來獲取API中的常量、類以及方法。
一個簡單的monkeyrunner程序實例(A Simple monkeyrunner Program)
以下為一個簡單的monkeyrunner程序,它將會連接到一個設備,創建一個MonkeyDevice對象。使用MonkeyDevice對象,程序將安裝一個Android應用包,運行其中一個活動,並向其發送按鍵事件。程序接下來會將結果截圖,創建一個MonkeyImage對象,並使用這個對象截圖將保存至.png文件。
The monkeyrunner API
monkeyrunnerAPI於com.android.monkeyrunner包中包含三個模塊:
* MonkeyRunner
:一個為monkeyrunner程序提供工具方法的類。這個類提供了用於連接monkeyrunner至設備或模擬器的方法。它還提供了用於創建一個monkeyrunner程序的用戶界面以及顯示內置幫助的方法。
* MonkeyDevice
:表示一個設備或模擬器。這個類提供了安裝和卸載程序包、啟動一個活動以及發送鍵盤或觸摸事件到應用程序的方法。您也可以用這個類來運行測試包。
* MonkeyImage
:表示一個截圖對象。這個類提供了截圖、將位圖轉換成各種格式、比較兩個MonkeyImage對象以及寫圖像到文件的方法。
在python程序中,您將以Python模塊的形式使用這些類。monkeyrunner工具不會自動導入這些模塊。您必須使用類似如下的from語句:
其中,為您想要導入的類名。您可以在一個from語句中導入超過一個模塊,其間以逗號分隔。
Running monkeyrunner
您可以直接使用一個代碼文件運行monkeyrunner,抑或在交互式對話中輸入monkeyrunner語句。不論使用哪種方式,您都需要調用SDK目錄的tools子目錄下的monkeyrunner命令。如果您提供一個文件名作為運行參數,則monkeyrunner將視文件內容為Python程序,並加以運行;否則,它將提供一個交互對話環境。
monkeyrunner命令的語法為:
表 1闡釋了命令的標志和參數。
參數
說明
-plugin <plugin_jar>
(可選)指定一個內含monkeyrunner插件的.jar
文件。欲了解更多關於monkeyrunner插件的內容,請參照(Extending monkeyrunner with plugins)使用插件擴展monkeyrunner。要指定多個文件,包括多次論證。如欲指定超過一個文件,可以多次使用此參數。
<program_filename>
如果您指定此參數,monkeyrunner將視文件內容為Python程序並予以執行。如果此參數未予指定,則開啟一個交互式會話。
<program_options>
(可選)<程序文件名> 所指定的程序所需的參數
monkeyrunner內建幫助(monkeyrunner Built-in Help)
您可以用以下命令來生成monkeyrunner的API參考:
參數說明:
* 可以為text
或html
,分別代表純文本和HTML輸出。
* 指定了輸出文件的全路經名稱。
使用插件擴展monkeyrunner(Extending monkeyrunner with Plugins)
您可以用Java語言創建新的類,並打包成一個或多個.jar
文件,以此來擴展monkeyrunnerAPI。您可以使用您自己寫的類或者繼承現有的類來擴展monkeyrunnerAPI。您還可以使用此功能來初始化monkeyrunner環境。
為了使monkeyrunner加載一個插件,您應當如使用如表1中所述的-plugin
參數來調用monkeyrunner命令。
在您編寫的插件中,您可以導入或繼承位於com.android.monkeyrunner包中的幾個主要的monkeyrunner類:MonkeyDevice, MonkeyImage和MonkeyRunner(參見monkeyrunnerAPI )。
請注意,插件無法讓你訪問Android的SDK。您不能導入com.android.app等包。這是因為monkeyrunner是在框架API層次之下與設備或模擬器進行交互的。
插件啟動類(The plugin startup class)
用於插件的.jar文件可以指定一個類,使其在腳本執行之前就實例化。如欲指定這個類,您需要在.jar文件的manifest中添加鍵MonkeyRunnerStartupRunner。其值為啟動時運行的類的名稱。以下代碼段顯示了如何在一個ant構建腳本達到這樣的目的:
如欲訪問monkeyrunner的運行時環境,啟動類可以實現com.google.common.base.Predicate<PythonInterpreter>。例如,用這個類在默認的命名空間中設置一些變量:
本章內容為開發者指南(Dev Guide)/Developing/Tools/monkeyrunner,版本為Android2.3 r1,翻譯轉載並整理自譯言:"biAji",原文地址:"http://article.yeeyan.org/view/37503/164523",再次感謝"bjAji" !期待你一起參與翻譯Android的相關資料,聯系我[email protected]。
聲明
本文檔轉載並整理自譯言:Monkeyrunner 使用說明
Android中文翻譯組:http://goo.gl/6vJQl
原文
http://developer.android.com/guide/developing/tools/monkeyrunner_concepts.html
可以顯示在的Android任務,通過加載進度條的進展。進度條有兩種形狀。加載欄和加載微調(spinner)。在本章中,我們將討論微調(spinner)。Spinner 用
TCP和UDP在網絡傳輸中非常重要,在Android開發中同樣重要。 首先我們來看一下什麼是TCP和UDP。 什麼是TCP? TCP:Transmission C
本文實例講述了android編程之XML文件解析方法。分享給大家供大家參考,具體如下: 在android開發中,經常用到去解析xml文件,常見的解析xml的方式有
JSON代表JavaScript對象符號。它是一個獨立的數據交換格式,是XML的最佳替代品。本章介紹了如何解析JSON文件,並從中提取所需的信息。Android提供了四個