什么是机器人组织?
Robotium是一个Android测试框架,用于自动化本机和混合应用程序的测试用例。此外,开发人员还可以编写功能、系统和验收测试场景,传播许多Android活动。
在本教程中,将了解-
- Robotium测试框架
- 如何使用Robotium
- 步骤1) 设计测试规范
- 步骤2) 编写测试程序
- 步骤3) 运行测试
- 步骤4) 获取测试结果
Robotium测试框架
标准的Android测试框架有一些限制,如下所示
- 无法处理多个Activity
- 测试执行性能较慢
- 测试用例很复杂,很难实现
Robotium框架是对Android应用进行测试的较好选择
Robotium是开源框架,被认为是Android测试框架的扩展。此外,开发人员可以编写跨越多个Android活动的功能、系统和验收测试场景。
Robotium的优势特性
Robotium测试用例类
Robotium使用一组类(com.jayway.android.bot tium.solo)进行测试。SOLO与ActivityInstrumentationTestCase2集成。
集成Robotium和ActivityInstrumentationTestCase2
通过使用Robotium测试用例类,测试人员可以在不了解应用程序设计(黑盒测试)的情况下编写测试用例。与Android测试用例类相比,这是一个突出的特性。
如何使用Robotium
要在Android测试项目中使用Robotium,需要遵循以下步骤
使用Robotium对Android应用进行测试。为了保证Android应用程序的质量,应该遵循以下步骤
- 设计测试规范
- 开发测试程序
- 在目标设备上执行测试用例
- 收集测试结果
Android应用测试流程
步骤1)设计测试规范
- 这是测试应用程序的第一步。在这一步中,将定义要测试的目标。在Android应用程序中,在应用程序中明确定义目标将有助于实现广泛的测试复盖面。
- 计划应该进行的测试类型(单元测试、功能测试、系统测试)。
- 设计测试用例以实现最大的覆盖率,但最小化测试用例的数量。测试的代码越多,及早发现错误的机会就越大。
步骤2)编写测试程序
本节将指导如何使用Android Junit Test和Robotium编写Android测试程序。假设已经开发了一个Android程序,该程序具有下面介绍的一些功能:
- 显示文本“Hello world!”在屏幕上。
- 当用户按下“开始”按钮时显示消息HelloAndroid
好Android应用程序
系统要求
- Android平台自带预集成的JUnit 3.0框架。
- 要从Eclipse创建Android测试项目,计算机必须安装:
- 最新版本Android平台(目前为Android 8.1)
可以下载带有内置ADT(Android开发人员工具)的Eclipse IDE。它包括必要的Android SDK组件和Eclipse IDE的一个版本。
对于Robotium测试框架,需要从Robotium网页下载Robotium库。
创建Android测试项目
- 单击文件->新建->其他
- 如下图所示选择:Android->Android测试项目->选择下一步
创建新的Android测试项目
写下测试项目的名称。按照命名约定,测试项目应该命名为“HelloAndroidTest”
根据命名约定添加测试项目名称
选择要测试的目标应用程序。在本例中,这是HelloAndroid单击Finish
选择测试中的目标应用程序
创建测试套件
根据测试规范,开始为测试程序创建测试套件。(可以在项目文件夹中创建lib文件夹)。
测试用例定义了运行多个测试的装置。要定义测试用例,必须遵循下面的程序结构:
-
实现一个子类
测试用例
。 - 定义存储装置状态的实例变量
- 通过重写来初始化装置状态 setUp()
- 通过重写在测试后进行清理 tearDown() 。
测试程序的结构
package com.example.helloandroid.test;
import com.example.helloandroid.HelloAndroid;
import com.jayway.android.robotium.solo.Solo;
import android.test.ActivityInstrumentationTestCase2;
import android.widget.TextView;
public class HelloAndroidTest extends ActivityInstrumentationTestCase2 <HelloAndroid> {
private HelloAndroid mActivity;
private TextView mView;
private String resourceString;
private Solo solo;
public HelloAndroidTest () {
// TODO Auto-generated constructor stub
super("com.example.helloandroid",HelloAndroid.class);
}
@Override
protected void setUp() throws Exception {
// TODO Auto-generated method stub
// super.setUp();
mActivity = this.getActivity();
solo = new Solo(getInstrumentation(),getActivity());
mView = (TextView) mActivity.findViewById(com.example.helloandroid.R.id.textview2);
resourceString = mActivity.getString(com.example.helloandroid.R.string.hello_world);
}
@Override
protected void tearDown() throws Exception {
// TODO Auto-generated method stub
//super.tearDown();
solo.finishOpenedActivities();
}
public void testPrecondition() {
assertNotNull(mView);
}
/* test Target application contains a text display "Hello World!"*/
public void testSearchText() {
assertEquals(resourceString,(String) mView.getText());
}
/* test HelloAndroid Activity on target application is exist*/
public void testCurrentActivity() throws Exception {
solo.assertCurrentActivity("wrong activity", HelloAndroid.class);
}
/* test Application UI contains "Start" button */
/* send event click button to target application */
public void testSearchButton() throws Exception {
boolean found = solo.searchButton("Start");
solo.clickOnButton("Start");
assertTrue(found);
}
}
添加测试用例
- 在与TestSuite相同的包中,我们创建TestCase类
-
要测试某些活动,即HelloAndroid,创建一个测试用例扩展ActivityInstrumentationTestCase2
- 在这个类中,测试人员可以通过 getActivity() 方法获取测试活动。
- 可以通过创建名为“test+原始方法名”的方法为测试活动自由创建测试
- 在测试方法中,测试人员可以使用Android JUnit函数将实际值与期望值进行比较。这些方法如下所示。
Robotium和Android测试框架的示例方法
上面的这些测试套件验证了Application GUI必须显示文本“Hello World!”,并包含名为“Start”的按钮。
步骤3) 运行测试
编写完测试程序后,使用以下步骤运行测试
- 将Android设备连接到PC(如果没有真机,启动Emulator)。
- 在IDE中,右键单击Run As -> Android Unit Test
运行测试程序
除了在IDE上运行测试之外,还可以在命令行上运行测试。在这个Linux终端中,可以使用以下命令来运行此软件包中的所有测试:
$ADB shell am Instrument-w-e Package com.example.helloandroid.test
步骤4) 获取测试结果
测试执行后,将获得测试结果。
在该测试程序中,执行了4种测试方法。在这种情况下,所有测试用例都通过了。
在所有测试用例均通过的情况下输出测试结果
如果测试用例失败,输出将显示并向显示哪些测试用例失败
在所有测试用例都失败的情况下输出测试结果
源代码示例
本文包括一些源代码示例,它们可以帮助更清楚地理解教程并快速掌握技术知识
- 好Android:正在测试的应用程序。
- HelloAndroidTest:使用Android测试框架的测试程序