做任何程序開發之前的第一項工作就是搭建環境,同樣在開始Robotium自動化測試之前,搭建相應的測試環境也是首要任務。
2.1 Android開發環境搭建
由於Robotium是基於Android的自動化測試框架,首先要搭建Android開發環境。
2.1.1 JDK安裝
如果你還沒有安裝JDK的話,可以去網上下載,接下來的工作就是根據安裝提示一步一步走。然後設置相應的環境變量,設置環境變量步驟如下:
(1)我的電腦->屬性->高級->環境變量->系統變量中添加以下環境變量:
JAVA_HOME值爲: D:\ProgramFiles\Java\jdk1.6.0_18(你安裝JDK的目錄)
CLASSPATH爲:.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\bin;
Path: 在開始追加 %JAVA_HOME%\bin;
NOTE:前面設置環境變量對搭建Android開發環境不是必須的,可以跳過。
(2)安裝完成之後,可以在檢查JDK是否安裝成功。打開cmd窗口,輸入java –version 查看JDK的版本信息。出現如圖2.1.1所示表示安裝成功了:
圖2.1.1、驗證JDK安裝是否成功
2.1.2 Eclipse安裝
Eclipse是一個開發的利器,關於這個開發工具,我們就不多說了,如果你沒有安裝,請從網上下載對應你操作系統位數的,最新版本的Eclipse,解壓即可使用。當然也有已經集成了ADT版本的Eclipse,這樣你就可以省略下面的ADT的安裝步驟了。
2.1.3 Android SDK安裝
在Android Developers下載android-sdk_r05-windows.zip,下載完成後解壓到任意路徑。
· 運行SDK Setup.exe,點擊Available Packages。如果沒有出現可安裝的包,請點擊Settings,選中Misc中的"Force https://..."這項,再點擊Available Packages 。
· 選擇希望安裝的SDK及其文檔或者其它包,點擊Installation Selected、Accept All、Install Accepted,開始下載安裝所選包
· 在用戶變量中新建PATH值爲:Android SDK中的tools絕對路徑(本機爲D:\AndroidDevelop\android-sdk-windows\tools)。
“確定”後,重新啓動計算機。重啓計算機以後,進入cmd命令窗口,檢查SDK是不是安裝成功。運行 android –h 如果有類似圖2.1.3所示的輸出,表明安裝成功:
2.1.4 ADT安裝
打開 Eclipse IDE,進入菜單中的 "Help" -> "Install New Software"
· 點擊Add...按鈕,彈出對話框要求輸入Name和Location:Name自己隨便取,Location輸入http://dl-ssl.google.com/android/eclipse。如圖2.1.4.1所示:
2.1.4.1 安裝ADT
· 確定返回後,在work with後的下拉列表中選擇我們剛纔添加的ADT,我們會看到下面出有Developer Tools,展開它會有Android DDMS和Android Development Tool,勾選他們。如圖2.1.4.2所示:
圖2.1.4.2添加Developer Tools
· 然後就是按提示一步一步next。
完成之後:
· 選擇Window >Preferences...
· 在左邊的面板選擇Android,然後在右側點擊Browse...並選中SDK路徑,本機爲: D:\AndroidDevelop\android-sdk-windows
· 點擊Apply、OK。配置完成。
2.1.5 創建AVD
爲使Android應用程序可以在模擬器上運行,必須創建AVD。
(1)在Eclipse中。選擇Windows > Android SDK and AVD Manager。
(2)點擊左側面板的Virtual Devices,再右側點擊New。
(3)填入Name,選擇Target的API,SD Card大小任意,Skin隨便選,Hardware目前保持默認值。
(4)點擊Create AVD即可完成創建AVD。
注意:如果你點擊左側面板的Virtual Devices,再右側點擊New ,而target下拉列表沒有可選項時,這時候你:
· 點擊左側面板的AvailablePackages,在右側勾選https://dl-ssl.google.com/android/repository/repository.xml,如圖2.1.5所示:
圖2.1.5添加虛擬設備
· 然後點擊Install Selected按鈕,接下來就是按提示做就行了
要做這兩步,原因是在1.3、Android SDK安裝中沒有安裝一些必要的可用包(Available Packages)。
2.2 Robotium的使用
下面我們以(http://www.robotium.cn/archives/210)上的一個例子講解一下在有源碼的情況下,如何使用Robotium進行測試。這個不是我們的重點,我們後面重點講解沒有源碼,只有Apk包的情況下的自動化測試用例編寫。
(1)下載Robotium官方例子(http://code.google.com/p/robotium/downloads/list/ExampleTestProject_v2.3.zip)以及最新的JAR包(http://code.google.com/p/robotium/downloads/list)
(2)打開Eclipse導入被測試工程,如圖2.2.1所示
圖2.2.1 導入被測試的功能
(3)創建測試工程:選擇Android Test Project,並點擊下一步,然後輸入工程名NotePadTest,並點擊下一步。
圖2.2.2 創建測試工程
(4)選擇被測工程NotePad,並點擊完成,如圖2.2.3所示:
圖2.2.3 選擇被測工程
(5)在測試工程中新建lib文件夾,並將下載好的Robotium jar包拷入lib中,並在build path中將jar包引入工程。如圖2.2.4所示:
圖2.2.4 將Robotium包添加到工程中
(6)打開測試工程中的manifest.xml文件,修改其中的:
<instrumentation
android:name="test"
android:targetPackage="com.example.test"/>
指定要被測試文件的name和package,如圖2.2.5所示:
圖2.2.5 修改manifest.xml
同時還要注意一點兒,在這個配置文件中有如下的結點:
<uses-sdk android:targetSdkVersion="17"android:minSdkVersion="14" android:maxSdkVersion="17"/>
這個上面寫的版本號要和你運行測試用例的機器版本號相同,或是大於測試機的版本號,否則會報錯。
(7)創建測試用例
A,新建junit test case,選擇junit4,並輸入類名NotePadTest,點擊完成,如圖2.2.6所示:
圖2.2.6 創建測試用例
B,打開新建的測試類,修改繼承ActivityInstrumentationTestCase2<NotesList>,創建構造方法,並編寫測試代碼,具體結果如圖2.2.7所示:
圖2.2.7 測試類結構
測試用例代碼如下:
01 package com.example.android.notepad.test;
02
03 import android.test.ActivityInstrumentationTestCase2;
04
05 import com.example.android.notepad.NotesList;
06 import com.jayway.android.robotium.solo.Solo;
07
08 public class NotePadTest extendsActivityInstrumentationTestCase2
09 {
10 private Solo solo;//聲明Solo
11 public NotePadTest()//構造方法
12 {
13 super(NotesList.class);
14
15 }
16
17 @Override
18 public void setUp() throws Exception
19 {
20 solo = new Solo(getInstrumentation(), getActivity());
21 }
22
23 @Override
24 public void tearDown() throws Exception
25 {
26 solo.finishOpenedActivities();
27 }
28
29 public void testAddNote() throws Exception
30 {
31 //點擊add note按鈕
32 solo.clickOnMenuItem("Add note");
33 //比對結果
34 solo.assertCurrentActivity("Expected NoteEditor activity", "NoteEditor");
35 //在第一個TextEdit控件上輸入內容
36 solo.enterText(0, "Note 1");
37 //返回上個界面
38 solo.goBack();
39 //點擊菜單中的Add note
40 solo.clickOnMenuItem("Add note");
41 //在第一個EditText中輸入內容
42 solo.enterText(0, "Note 2");
43 //返回NotesList activity
44 solo.goBackToActivity("NotesList");
45 //截屏
46 solo.takeScreenshot();
47 boolean expected = true;
48 boolean actual = solo.searchText("Note 1") ;
solo.searchText("Note 2");
49 assertEquals("Note 1 and/or Note 2 are not found", expected, actual);
50
51 }
52
53 }
C,編寫完成後,打開模擬器或者連接上真機,右擊測試類,選擇Android junit Test,如圖2.2.8所示。
圖2.2.8 運行測試用例
D,Eclipse會切換到junit界面,此時模擬器(真機)會自動執行測試,通過左邊界面可以看到運行結果,如圖2.2.9所示:
圖2.2.9 robotium運行結果
一個簡單的測試就結束了,這個測試用例是官方提供的類似於HelloWorld的測試用例,我們不妨在環境配置這一章節講解一下。如果你不太懂,沒有關係,因爲這種方法不常用。具體的如何對只有安裝包Apk的測試纔是重要,我們後面會詳細講解。
2.3 本章小結
本章我們講述了Robotium開發環境的搭建,並且講解了一下Robotium官方提供的一個基於源碼的記事本測試用例。可能大家剛剛接觸到這個測試框架,沒有看明白這個測試用例,不過沒有關係,就當先了解一下結構嘛,後面的章節我們會詳細講解的。