天天看點

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

前言

聲明

原文 

<a href="http://developer.android.com/guide/developing/tools/monkeyrunner_concepts.html"></a>

正文

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檔案。

    

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

the monkeyrunner api

monkeyrunnerapi于com.android.monkeyrunner包中包含三個子產品:

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

  

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

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

running monkeyrunner

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

monkeyrunner指令的文法為:

Android開發者指南(5) —— 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參考:

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

         參數說明:

* 可以為<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建構腳本達到這樣的目的:

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

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

   

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

轉載:http://www.cnblogs.com/over140/archive/2011/02/28/1966907.html