今天突然對Android的自動化測試有點兒感興趣,google了下,發現自動化測試的工具還真不少,有Monkey,MonkeyRunner,Robotium等太多了,前段時間也看到了 風泊海上 寫的《Android自動化測試之Robotium學習》的博文,呵呵感覺也不錯,但是我自己也喜歡自己總結,做下筆記哈。
<a href="http://blog.51cto.com/attachment/201210/171811619.png" target="_blank"></a>
下載下傳完成後,可以看到如下
<a href="http://blog.51cto.com/attachment/201210/172147160.png" target="_blank"></a>
将ExampleTestProject_v3.4.1.zip導入到eclipse中,可以看到有兩個多了兩個項目。NotepadTest是測試項目,測試Notepad的,我們可以直接運作Android JUnit Test 檢視運作效果,即可以看到模拟器上面正在自動測試。
<a href="http://blog.51cto.com/attachment/201210/172147108.png" target="_blank"></a>
<a href="http://blog.51cto.com/attachment/201210/172147438.png" target="_blank"></a>
現在我們自己一步步的完整的寫個程式進行自動化測試。
1、首先建立一個hellorobotium的project,裡面内容簡單,隻需要一個輸入框,和一個按鈕即可。邏輯代碼直接下載下傳源碼看。如下圖
<a href="http://blog.51cto.com/attachment/201210/172546368.png" target="_blank"></a>
2、現在開始建立測試項目。右擊建立,找到Android Test Project
<a href="http://blog.51cto.com/attachment/201210/172835109.png" target="_blank"></a>
然後選中下一步,填寫Project name,自己随便取,然後在下一步選擇要測試的項目即可。
<a href="http://blog.51cto.com/attachment/201210/173201409.png" target="_blank"></a>
3、建立完成後,添加robotium-solo-3.4.1.jar,如下圖所示
<a href="http://blog.51cto.com/attachment/201210/173426497.png" target="_blank"></a>
4、開始編寫測試類(Test)
package com.xzw.test;
import com.jayway.android.robotium.solo.Solo;
import com.xzw.example.EditorActivity;
import android.test.ActivityInstrumentationTestCase2;
public class Test extends ActivityInstrumentationTestCase2<EditorActivity>{
private Solo solo;
public Test(){
super(EditorActivity.class);
}
@Override
protected void setUp() throws Exception {
//setUp() is run before a test case is started.
//This is where the solo object is created.
solo = new Solo(getInstrumentation(), getActivity());
}
protected void tearDown() throws Exception {
//tearDown() is run after a test case has finished.
//finishOpenedActivities() will finish all the activities that have been opened during the test execution.
solo.finishOpenedActivities();
/**
* 測試點選事件
*/
public void testClick(){
solo.assertCurrentActivity("進入EditorActivity", "EditorActivity");
try {
Thread.sleep(1000); //休息1秒
} catch (InterruptedException e) {
e.printStackTrace();
}
solo.clickOnEditText(0); //點選輸入框
} catch (InterruptedException e) {
// TODO Auto-generated catch block
solo.enterText(0, "xzw"); //往第一個EditText,輸入文本。第一個為0
solo.clickOnButton("Click"); //點選按鈕
solo.takeScreenshot(); //螢幕截圖,并儲存到 "/sdcard/Robotium-Screenshots/".
boolean expected = true;
boolean actual = solo.searchText("xx"); //查找含有xx字元的text,如果沒有則傳回false
//驗證預期結果
assertEquals("xx is not found", expected, actual);
}
5、運作android junit test檢視運作結果。
<a href="http://blog.51cto.com/attachment/201210/174044920.png" target="_blank"></a>
嘿嘿,搞定是不是很簡單啊。
歡迎大家一起學習交流。
本文轉自xuzw13 51CTO部落格,原文連結:http://blog.51cto.com/xuzhiwei/1019911,如需轉載請自行聯系原作者