robotium經常使用方法

①  點擊:java

clickOnButton(int) //Clicks on a Button with a given index.android

clickOnButton(String) //Clicks on a Button with a given text.web

clickOnCheckBox(int) //Clicks on a CheckBox with a given index.正則表達式

clickOnView(View) //Clicks on a given View.ide

clickOnText(String) //Clicks on a View displaying a given text.函數

clickLongOnText(String) //Long clicks on a given View.測試

clickOnRadioButton(int) //Clicks on a RadioButton with a given index.xml

clickOnScreen(float, float) //Clicks on a given coordinate on the screen.對象

 

②  取得:繼承

getCurrentActivity() //Returns the current Activity.

getText(String) //Returns a TextView which shows a given text.

getView(int) //Returns a View with a given id.

getEditText(String) //Returns an EditText which shows a given text.  

getImage(int) //Returns an ImageView with a given index.

 

③  拖拽:

drag(float, float, float, float, int) //Simulate touching a given location and dragging it to a new location.

 

④  搜索:

searchText(String) //Searches for a text string and returns true if at least one item is found with the expected text.

searchEditText(String) //Searches for a text string in the EditText objects located in the current Activity.

searchButton(String, boolean) //Searches for a Button with the given text string and returns true if at least one Button is found.

clickOnMenuItem(String);功能是點擊Menu按鈕,選擇文本描述爲String的菜單,如咱們的例子是"Add note"

assertCurrentActivity(String message,String name);這個是判斷當前的activity是否和我預期的一致

message是描述性的文字

name是指activity的名字

 

關於如何知道activity 名字,目前的方法是得看源碼中的 AndroidManifest.xml--Application label--Application Nodes,在那裏咱們能夠看到全部的activity的name

 

enterText(int index,string text);index用來標識寫到哪一個EditText中。若是當前只打開一個EditText,那index=0

text:就是咱們要寫入的內容

goBack();至關於手機上的 返回鍵(back key)

goBackToActivity(String name);返回到指定的activity

searchText(String text)在當前的activity中搜索是否含有text的內容

clickInList(int index);點擊list表的第index行,進入該文本界面

solo.setActivityOrientation(Solo.LANDSCAPE);setActivityOrientation,設置手機屏幕顯示方式

LANDSCAPE:橫向顯示

Portrait:豎向顯示

clickOnText(String text);點擊包含該文字的地方

其中text能夠用正則表達式表示

(i)----忽略大小寫。默認狀況是大小寫敏感的。

正則表達式與java保持一致

clickLongOnText(String text);長時間按住所選的文字

這裏須要注意:被測apk和測試apk必須使用相同的簽名

 

Robotium問題總結

一、Robotium的測試類ActivityInstrumentationTestCase2繼承了TestCase類,即robotiom的測試類是junit3的實例,並無junit4的特徵,好比經過annotate的方式來識別子類的新特徵,沒不能實現@beforeclass,@afterclass等特徵。只能經過寫setup和teardown,以及test開頭的測試用例的方式進行測試case書寫。

 

二、有些button沒有string,沒有text,只能經過index來click, 這樣很不直觀,並且button的index並非固定的,有可能隨着 控件從新加載,順序也有可能發生變化,沒法保證測試結果。查看了robotium源碼,發現大多數click方法最終都是經過傳入參數轉成view,再調 用clickOnView,因而參照着寫了一個經過button的ID來click的方法。Button的ID須要查看測試對象的源碼中獲取。好比導航中就有菜單欄大多數據button就是這種類型的。

 

三、有的activity點擊後不能獲取焦點,能夠經過另外的方式獲取activity的內容,好比Activity act = solo.getCurrentActivity();獲取當前的activity,而後經過act.findViewById的方式獲取控件。

 

四、多個屏幕的狀況,能夠經過滾屏的方式滑動,solo.scrollToSide(Solo.LEFT),若是多屏屬於一個activity,則不須要滑動也能運行case獲取數據。

 

五、有時text view或者button的click方法會失效,咋辦?答案是在被測程序的AndroidManifest.xml文件里加上這麼一句:<supports-screens android:anyDensity="true"/>就好了。

 

六、若是要想在robotium的測試程序裏讀寫SD card腫麼辦?答案是在被測程序的AndroidManifest.xml文件里加上<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>。注意是在被測程序里加上,在測試程序自己的manifest文件里加會很坑爹的。

 

七、listview動態添加item如何判斷添加成功。可從添加前及添加後Item個 數判斷,先肯定添加item的屬性,再經過相應的方法獲取item。好比添加一個item可能須要三個textview,那麼經過 getCurrentTextViews(View)先後獲取到的個數差就相差三個。好比添加黑名單到黑名單列表。

(1)有的listView只有web,或者主要是文本,能夠經過getItemAtPosition(i).toString()的方法獲取第幾行的內容。

solo.clickOnText(chooseProvPage.getListView().getItemAtPosition(i).toString());

(2)有的listView包含多個testView或者button,能夠經過findViewById的方法獲得某一行的一項的內容。

 

八、沒法捕獲Toast,這個有點不明白。大概實驗了一下,能夠使用waitForText這個函數來捕獲文字,這個方法返回值是布爾型的,因此返回true就是找到了。

 

九、結果判斷

(1)waitForText

該方法適用於點擊操做後須要一點時間才返回結果的結果判斷。好比聯網操做,能夠設置適當的延時,等待返回結果,判斷結果更加正確。

(2)assertActivity

該方法適用於activity時,能夠判斷點擊操做切換Activity是否正確,能夠與waitfortext配合使用。

(3)searchText+assert

當有editText時,輸入內容後,可經過searchText查找輸入內容是不是預期結果,再將返回結果判斷。

相關文章
相關標籤/搜索