------手机自动化测试之Robotium
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文件,修改其中的:
<</SPAN>instrumentation
android:name="test"
android:targetPackage="com.example.test" />
指定要被测试文件的name和package,如图2.2.5所示:
图2.2.5 修改manifest.xml
同时还要注意一点儿,在这个配置文件中有如下的结点:
这个上面写的版本号要和你运行测试用例的机器版本号相同,或是大于测试机的版本号,否则会报错。
(7)创建测试用例
A,新建junit test case,选择junit4,并输入类名NotePadTest,点击完成,如图2.2.6所示:
图2.2.6 创建测试用例
B,打开新建的测试类,修改继承ActivityInstrumentationTestCase2,创建构造方法,并编写测试代码,具体结果如图2.2.7所示:
图2.2.7 测试类结构
测试用例代码如下:
package com.example.android.notepad.test; import android.test.ActivityInstrumentationTestCase2; import com.example.android.notepad.NotesList; import com.jayway.android.robotium.solo.Solo; public class NotePadTest extendsActivityInstrumentationTestCase2 { private Solo solo;//声明Solo public NotePadTest()//构造方法 { super(NotesList.class); } @Override public void setUp() throws Exception { solo = new Solo(getInstrumentation(), getActivity()); } @Override public void tearDown() throws Exception { solo.finishOpenedActivities(); } public void testAddNote() throws Exception { //点击add note按钮 solo.clickOnMenuItem("Add note"); //比对结果 solo.assertCurrentActivity("Expected NoteEditor activity", "NoteEditor"); //在第一个TextEdit控件上输入内容 solo.enterText(0, "Note 1"); //返回上个界面 solo.goBack(); //点击菜单中的Add note solo.clickOnMenuItem("Add note"); //在第一个EditText中输入内容 solo.enterText(0, "Note 2"); //返回NotesList activity solo.goBackToActivity("NotesList"); //截屏 solo.takeScreenshot(); boolean expected = true; boolean actual = solo.searchText("Note 1") ; solo.searchText("Note 2"); assertEquals("Note 1 and/or Note 2 are not found", expected, actual); } }
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官方提供的一个基于源码的记事本测试用例。可能大家刚刚接触到这个测试框架,没有看明白这个测试用例,不过没有关系,就当先了解一下结构嘛,后面的章节我们会详细讲解的。