做任何程序开发之前的第一项工作就是搭建环境,同样在开始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官方提供的一个基于源码的记事本测试用例。可能大家刚刚接触到这个测试框架,没有看明白这个测试用例,不过没有关系,就当先了解一下结构嘛,后面的章节我们会详细讲解的。