Robotium 教程:你的第一个 Android 框架
什么是 Robotium?
Robotium 是一个安卓测试框架,用于自动化原生和混合应用程序的测试用例。使用 Robotium,开发人员可以为安卓应用程序创建强大的自动 GUI 测试用例。此外,开发人员可以编写跨多个安卓活动的函数、系统和验收测试场景。
Robotium 测试框架
标准安卓测试框架存在以下一些限制
- 无法处理多个活动
- 测试执行性能慢
- 测试用例复杂且难以实现
Robotium 框架是安卓应用程序测试的更好选择
Robotium 是一个开源框架,被认为是安卓测试框架的扩展。使用 Robotium,开发人员可以为安卓应用程序创建强大的自动 GUI 测试用例。此外,开发人员可以编写跨多个安卓活动的函数、系统和验收测试场景。
.png)
Robotium 测试用例类
Robotium 使用一组类 (com.jayway.android.robotium.solo) 进行测试。此类支持跨多个活动的测试用例。Solo 与 ActivityInstrumentationTestCase2 集成。
测试人员可以使用 Robotium 测试用例类在不了解应用程序设计的情况下编写测试用例(黑盒测试)。与安卓测试用例类相比,这是一个出色的功能。
如何使用 Robotium
要在您的安卓测试项目中使用 Robotium,您需要遵循以下步骤
使用 Robotium 对安卓应用程序进行测试。为确保您的安卓应用程序质量,您应遵循以下步骤
- 设计测试规范
- 开发测试程序
- 在目标设备上执行测试用例
- 收集测试结果
步骤 1) 设计测试规范
- 这是测试您的应用程序的第一步。在此步骤中,您定义要测试的目标。在您的安卓应用程序中,有许多目标需要测试,例如 UI、Activity、组件、服务。明确定义应用程序中的目标将有助于实现广泛的测试覆盖率。
- 规划应进行的测试类型(单元测试、功能测试、系统测试)。
- 设计测试用例以实现最大覆盖率,同时最大限度地减少测试用例数量。测试的代码越多,早期发现错误的机会就越大。
步骤 2) 编写测试程序
本节指导您如何使用安卓 Junit Test 和 Robotium 编写安卓测试程序。假设您已经开发了一个名为 HelloAndroid 的安卓程序。此程序具有以下描述的一些功能
- 在屏幕上显示文本“Hello world!”。
- 当用户按下“开始”按钮时显示消息 HelloAndroid
系统要求
- 安卓平台预集成了 JUnit 3.0 框架。
- 为了从 Eclipse 创建安卓测试项目,您的计算机必须已安装
- 最新版本的安卓平台(目前是安卓 8.1)
您可以下载带有内置 ADT(安卓开发工具)的 Eclipse IDE。它包括基本的安卓 SDK 组件和 Eclipse IDE 的一个版本。
对于 Robotium 测试框架,您需要从 Robotium 网页下载 Robotium 库。
创建安卓测试项目
- 点击文件 -> 新建 -> 其他
- 选择:安卓 -> 安卓测试项目,如下图所示 -> 选择下一步
输入您的测试项目名称。按照命名约定,您的测试项目应命名为“HelloAndroidTest”
选择要测试的目标应用程序。在这种情况下,这是 HelloAndroid,点击完成
创建测试套件
根据您的测试规范,您开始为您的测试程序创建测试套件。您可以选择各种测试框架。在本教程中,我选择标准安卓测试框架 ActivityInstrumentationTestCase2。如果您想使用 Robotium 框架进行测试,您必须将 Robotium 库文件添加到项目文件夹中的 libs 目录。(您在项目文件夹中创建 lib 文件夹)。
测试用例定义了运行多个测试的夹具。要定义测试用例,您必须遵循以下程序结构
- 实现
TestCase
的子类。 - 定义存储夹具状态的实例变量
- 通过重写 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<HelloAndroid>
- 在此类中,测试人员可以通过 getActivity() 方法获取测试活动。
- 您可以通过创建名称为“test + 原始方法名”的方法自由地为测试活动创建测试
- 在测试方法中,测试人员可以使用安卓 JUnit 函数比较实际值和预期值。这些方法如下所示。
上述这些测试套件验证了应用程序 GUI 必须显示文本“Hello World!”,并包含一个名为“Start”的按钮。
步骤 3) 运行测试
完成测试程序编写后,请按照以下步骤运行测试
- 将安卓设备连接到您的电脑(如果您没有真实设备,则启动模拟器)。
- 在您的 IDE 中,右键单击 -> 运行方式 -> 安卓单元测试
除了在 IDE 上运行测试,您还可以在命令行上运行测试。在这个测试程序中,测试包是 com.example.helloandroid.test。在 Linux 终端中,您可以使用以下命令运行此包中的所有测试
$ adb shell am instrument -w -e package com.example.helloandroid.test
步骤 4) 获取测试结果
测试执行后,您将获得测试结果。
在此测试程序中,执行了 4 个测试方法。在这种情况下,所有测试用例都通过了。
如果测试用例失败,将显示输出并显示哪些测试用例失败
源代码示例
本文包含一些源代码示例,可帮助您更清晰地理解本教程并快速掌握技术知识
- HelloAndroid:待测应用程序。
- HelloAndroidTest:使用安卓测试框架的测试程序