Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android開發者指南(5) —— monkeyrunner

Android開發者指南(5) —— monkeyrunner

編輯: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    ossubprocess模塊來調用如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參考:

        

         參數說明:

* 可以為texthtml,分別代表純文本和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
 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved