天天看點

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

正文

monkeyrunner工具提供了一個API,使用此API寫出的程式可以在Android代碼之外控制Android裝置和模拟器。通過monkeyrunner,您可以寫出一個Python程式去安裝一個Android應用程式或測試包,運作它,向它發送模拟擊鍵,截取它的使用者界面圖檔,并将截圖存儲于工作站上。monkeyrunner工具的主要設計目的是用于測試功能/架構水準上的應用程式和裝置,或用于運作單元測試套件,但您當然也可以将其用于其它目的。

monkeyrunner工具為Android測試提供了以下特性:

* 多裝置控制:monkeyrunner    API可以跨多個裝置或模拟器實施測試套件。您可以在同一時間接上所有的裝置或一次啟動全部模拟器(或統統一起),依據程式依次連接配接到每一個,然後運作一個或多個測試。您也可以用程式啟動一個配置好的模拟器,運作一個或多個測試,然後關閉模拟器。

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

* 回歸測試: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包中包含三個子產品:

在python程式中,您将以Python子產品的形式使用這些類。monkeyrunner工具不會自動導入這些子產品。您必須使用類似如下的from語句:

  

其中,為您想要導入的類名。您可以在一個from語句中導入超過一個子產品,其間以逗号分隔。

Running monkeyrunner

您可以直接使用一個代碼檔案運作monkeyrunner,抑或在互動式對話中輸入monkeyrunner語句。不論使用哪種方式,您都需要調用SDK目錄的tools子目錄下的monkeyrunner指令。如果您提供一個檔案名作為運作參數,則monkeyrunner将視檔案内容為Python程式,并加以運作;否則,它将提供一個互動對話環境。

monkeyrunner指令的文法為:

   

表 1闡釋了指令的标志和參數。

參數

說明

<code>-plugin &lt;plugin_jar&gt;</code>

<code>&lt;program_filename&gt;</code>

如果您指定此參數,monkeyrunner将視檔案内容為Python程式并予以執行。如果此參數未予指定,則開啟一個互動式會話。

<code>&lt;program_options&gt;</code>

(可選)&lt;程式檔案名&gt; 所指定的程式所需的參數

monkeyrunner内建幫助(monkeyrunner Built-in Help)

您可以用以下指令來生成monkeyrunner的API參考:

         參數說明:

* 可以為<code>text</code>或<code>html</code>,分别代表純文字和HTML輸出。

* 指定了輸出檔案的全路經名稱。

使用插件擴充monkeyrunner(Extending monkeyrunner with Plugins)

您可以用Java語言建立新的類,并打包成一個或多個<code>.jar</code>檔案,以此來擴充monkeyrunnerAPI。您可以使用您自己寫的類或者繼承現有的類來擴充monkeyrunnerAPI。您還可以使用此功能來初始化monkeyrunner環境。

         請注意,插件無法讓你通路Android的SDK。您不能導入com.android.app等包。這是因為monkeyrunner是在架構API層次之下與裝置或模拟器進行互動的。

插件啟動類(The plugin startup class)

         用于插件的.jar檔案可以指定一個類,使其在腳本執行之前就執行個體化。如欲指定這個類,您需要在.jar檔案的manifest中添加鍵MonkeyRunnerStartupRunner。其值為啟動時運作的類的名稱。以下代碼段顯示了如何在一個ant建構腳本達到這樣的目的:

如欲通路monkeyrunner的運作時環境,啟動類可以實作com.google.common.base.Predicate&lt;PythonInterpreter&gt;。例如,用這個類在預設的命名空間中設定一些變量:

   

本文轉自over140 51CTO部落格,原文連結:http://blog.51cto.com/over140/582283,如需轉載請自行聯系原作者