眾所周知,一般情況下我們使用android中的monkeyrunner進行自動化測試時,使用的是python語言來寫測試腳本。不過,最近發現可以用java調用monkeyrunner api,用java語言寫測試腳本。
于是,就簡單研究了一下。這里做一些總結。希望有對在研究的午飯可以有所用處。
開始時,搜素到一些零碎的教程,說使用java調用monkeyrunner時,需要導入android sdk tools路徑下的lib里面的4個包:ddmlib.jar,guavalib.jar,monkeyrunner.jar,sdklib.jar.當然,這里建的是java工程,往工程里面導包就是通過:右鍵工程》properties》java build path》libraries》add external jars》ok。如下圖:
導入之后,我簡單創建了一個測試類,然后添加一個monkeydevice對象,然后引入需要的包,結果發現報了錯誤,引用的資源找不到,根據看到的例子的提示說,需要手動添加adbbackend.java文件到自己的工程中去。于是,我就在搜了一下,在官網上下到了這個類(官網地址:http://www.java2s.com/open-source/android/android-core/platform-sdk/com/android/monkeyrunner/adb/catalogadb.htm)添加進去,之后,monkeydevice問題解決了,但是,下一個問題出現了,adbbackend的父類文件找不到,就是monkeyrunnerbackend.java,然后我只好去搜這個文件,然后手動添加到自己的工程中(地址是:http://www.java2s.com/open-source/android/android-core/platform-sdk/com/android/monkeyrunner/monkeyrunnerbackend.java.htm)。結果這就像一個無底洞了,總是找不到最終一個文件的父類:如圖:
折騰了一番,我就感覺不應該是這樣的,不過搜索了很多零碎的資料,差不多都是跟這個方法一個意思。最后,我在一個論壇找到了一個勉強稱之為解決方法的答案。他重新給了我四個包,說是我導入的這四個包版本太新了(我的更新到android4.1)。我添加進去之后,果然能用。
這里簡單貼一下我的代碼,說一下調用問題:
復制代碼 代碼如下:
import java.util.arraylist;
import java.util.collection;
import java.util.hashmap;
import com.android.monkeyrunner.adb.adbbackend;
import com.android.monkeyrunner.core.imonkeydevice;
import com.android.monkeyrunner.core.touchpresstype;
public class mytest2 {
private static imonkeydevice device;
private static adbbackend adb;
public static void main(string[] args) {
// todo auto-generated method stub
if (adb==null){
adb = new adbbackend();
// 參數分別為自己定義的等待連接時間和設備id
device = adb.waitforconnection(8000,"msm8225qrd5");
}
//添加啟動權限
string action = "android.intent.action.main";
collection<string> categories = new arraylist<string>();
categories.add("android.intent.category.launcher");
// 啟動要測試的主界面,主要是配置自己的包和啟動類
device.startactivity(null, action, null, null, categories,
new hashmap<string, object>(),"cn.com.fetion/.android.ui.activities.startactivity", 0);
// 點擊某一個坐標
device.touch(202,258,touchpresstype.down_and_up);
}
}
這些代碼還是比較簡單,主要注意的是兩點:1).
adb.waitforconnection(a,b);這個方法里添加的是等待啟動的時間和自己的設備名字。2).startactivity()這個方法的倒數第二個參數是配置你的要測試的apk的包名和主界面,
運行java application就可以連上你的測試設備。其他的一些需要用到的測試方法,比如monkeyrunner中的touch,drag,type,等等,都是monkeyrunner中的方法,你也可以簡單的封裝一下就可以使用。跟使用python時,沒多少區別。
說到為什么要使用java語言調用monkeyrunner來寫腳本,我因為習慣了用python寫,暫時沒體會到有啥太大的優勢,也許是工程量大時,用java更直接和便于管理,也許就是個人愛好了。這個有待以后體驗。