android 自動(dòng)化測(cè)試的傻瓜實(shí)踐之旅(UI篇) -----小試身手
自動(dòng)化的 UI 測(cè)試
目前能免費(fèi)進(jìn)行android UI的自動(dòng)化測(cè)試的方法有以下三種:
Monkey&MonkeyRunnerandroid 的Junit 測(cè)試框架Robotium
入門難度一般困難非常簡(jiǎn)單
功能方面很一般無(wú)所不能基本滿足
關(guān)于Monkey & MonkeyRunner可以參考本人寫的另外兩篇
android實(shí)用測(cè)試方法之Monkey與MonkeyRunner (評(píng)論部分有些常見(jiàn)問(wèn)題及部分解決有興趣的可以大概瀏覽一下)
增強(qiáng)型MonkeyRunner 腳本計(jì)劃 (算是一個(gè)小小的實(shí)踐吧)
說(shuō)下,Monkey&MonkeyRunner
優(yōu)點(diǎn): 上手簡(jiǎn)單,只需要apk
缺點(diǎn): 文檔少,容易出錯(cuò),編寫腳本需要python基礎(chǔ).
android 的Junit
關(guān)于這個(gè)內(nèi)容我曾經(jīng)做個(gè)一個(gè)小小的視頻,后來(lái)上傳到了優(yōu)酷
Android 測(cè)試入門教程之a(chǎn)ctivity簡(jiǎn)單測(cè)試 (慎入,聲音比較蛋疼,畫面被優(yōu)酷壓縮得不像樣..)
說(shuō)下, android for Junit
優(yōu)點(diǎn): 無(wú)所不能…
缺點(diǎn): 上手不容易,需要源碼.
Robotium
本文重點(diǎn)簡(jiǎn)介的方法….
說(shuō)下,Robotium
優(yōu)點(diǎn): 足夠簡(jiǎn)單,足夠強(qiáng)大,支持apk測(cè)試
缺點(diǎn): 還不能替代android for Junit
愉快的UI測(cè)試之旅 by Robotium
Robotium 是一個(gè)開(kāi)源項(xiàng)目:
http://code.google.com/p/robotium/
目前最新版本:Robotium 3.1 is now released!
竟然,要做測(cè)試,我們要新建一個(gè)用于測(cè)試的項(xiàng)目:
直接下載項(xiàng)目吧….
http://vdisk.weibo.com/s/3feB5
然后,創(chuàng)建一個(gè)android的測(cè)試項(xiàng)目..
1,創(chuàng)建項(xiàng)目

2,選擇要測(cè)試的項(xiàng)目

3,完成

4,把Robotium導(dǎo)入到測(cè)試項(xiàng)目里面,順便說(shuō)一下:ADT 17 預(yù)覽版 4已經(jīng)支持自動(dòng)把libs下的jar包導(dǎo)入到依賴環(huán)境中…用之前版本的朋友手動(dòng)添加吧…

編寫第一個(gè)UI測(cè)試方法
?1
2
3
4
5
6
7
8
9
10
11
12
13
14
15public class FootTabClickTest extends ActivityInstrumentationTestCase2
//1,創(chuàng)建一個(gè)自動(dòng)化測(cè)試對(duì)象
private Solo tabSolo;
public FootTabClickTest () {
super("com.achai",TabViewActivity.class);
}
@Override
protected void setUp() throws Exception {
// TODO Auto-generated method stub
super.setUp();
//2,初始化我們的測(cè)試對(duì)象
?1
2
3
4
5
6
7
8
9
10
11
12tabSolo = new Solo(getInstrumentation(), getActivity());
}
@Smoke
public void testClickEachTab(){
//3,獲取我們view 中所有的單選按鈕,沒(méi)錯(cuò)就是這么簡(jiǎn)單…
ArrayList
//4,自動(dòng)點(diǎn)擊每個(gè)單選按鈕
for(int i=0; i < radioGroup.size(); i++){
tabSolo.clickOnRadioButton(i);
//5,暫停1s 用來(lái)看效果的…
?1
2
3tabSolo.sleep(1000);
}
//6,又一個(gè)強(qiáng)大的功能,直接識(shí)別點(diǎn)擊當(dāng)前view中匹配的文本,與控件無(wú)關(guān)!!!!!!!
?1
2
3 tabSolo.clickOnText("(?i).*?我的收藏.*");
tabSolo.sleep(1000);
//7,這個(gè)是長(zhǎng)按,注意留意動(dòng)畫
?1
2
3
4
5
6
7
8
9
10
11
12
13
14 tabSolo.clickLongOnText("返回");
tabSolo.sleep(2000);
// tabSolo.clickOnRadioButton(1);
}
@Override
protected void tearDown() throws Exception {
// TODO Auto-generated method stub
super.tearDown();
}
}
效果動(dòng)畫:

總結(jié)
就這么多了,感覺(jué)還不夠?那下次在更新吧…
【編輯推薦】