Robotium 教程: Android 测试框架示例
什么是 Robotium?
Robotium 是一个 Android 测试框架,可自动执行原生和混合应用程序的测试用例。 Robotium开发人员可以创建强大的自动化 GUI 测试用例。 Android 应用程序。开发人员还可以编写跨越多个应用程序的功能测试、系统测试和验收测试场景。 Android 活动。
Robotium 测试框架
标准 Android 测试框架存在以下局限性。
- 无法处理多项活动
- 测试执行性能缓慢
- 测试用例复杂且难以实现。
此 Robotium 框架是进行测试的更佳选择。 Android 应用程序。
Robotium 是一个开源框架,被认为是 的扩展 Android 测试框架。使用 Robotium开发人员可以创建强大的自动化 GUI 测试用例。 Android 此外,开发人员可以编写跨越多个应用程序的功能测试、系统测试和验收测试场景。 Android 活动。
下表总结了区分不同功能的高级特性。 Robotium 从简单的仪器框架出发。
的高级功能 Robotium
Robotium 测试用例类
Robotium 它提供了一小集用于测试的类,文章中的示例导入了旧版本。 com.jayway.android.robotium.solo 软件包。这些类支持跨越多个活动的测试用例,并且 Solo 与...整合 ActivityInstrumentationTestCase2.
注意: 当前 Robotium 发布版本在较短的版本下公开了相同的类。 com.robotium.solo 软件包,而 Maven 坐标保持不变 com.jayway.android.robotium:robotium-solo调整导入语句,使其与您实际添加到项目中的 JAR 版本相匹配。
下图显示了 Solo 类如何位于仪器测试用例之上。
整合 Robotium 和 ActivityInstrumentationTestCase2
测试人员无需了解应用程序设计即可编写测试用例,这使得该方法成为一种…… 黑盒测试与普通的……相比,这是一个显著的优势。 Android 测试用例类。
使用方法 Robotium
使用 Robotium 在您的 Android 测试项目时,您需要按照以下步骤操作。
使用方法 Robotium
为了保证您的产品质量 Android 申请时,请按照以下四个步骤进行操作。
- 设计测试规范
- 开发测试程序
- 在目标设备上执行测试用例
- 收集测试结果
下面的流程图按顺序展示了这四个阶段。
Android 应用程序测试流程
步骤 1)设计测试规范
这是测试应用程序的第一步。在这一步中,您需要定义要测试的目标。 Android 应用程序包含许多需要测试的目标,例如用户界面、活动、组件和服务。明确定义测试目标有助于实现广泛的测试覆盖。
- 计划要进行的测试类型(单元测试、功能测试、系统测试)。
- 设计每个 测试用例 为了最大程度地覆盖,同时保持ping 测试用例数量太少。测试的代码越多,及早发现缺陷的几率就越高。
步骤 2)编写测试程序
本节将指导您如何编写…… Android 测试程序使用 Android JUnit 测试和 Robotium假设您已经开发了一个 Android 名为 Hello 的程序Android该程序具有以下所述的功能。
- 在屏幕上显示文字“Hello world!”。
- 显示“你好”Android 当用户按下“开始”按钮时显示的消息。
下面的屏幕截图显示了被测应用程序在设备上运行的情况。
您好Android 应用
系统要求
- 此 Android 平台自带预集成功能 JUnit 3 框架,也就是
ActivityInstrumentationTestCase2建立在. - 创建一个 Android 来自测试项目的 Eclipse你的机器需要正常工作 Android SDK安装。
- 安装当前 Android 平台 SDK,而不是固定的旧版本。
本教程中的屏幕截图使用 Eclipse 使用 ADT 插件,这是编写示例时的标准工具链。 Eclipse ADT 已不再受支持,因此在现代计算机上,您应该 download Android Studio 相反,可以在内部重用相同的测试代码。 Gradle 模块。
如报名参加 Robotium 测试框架,下载 Robotium 来自图书馆 Robotium 项目页.
创建 Android 测试项目
- 单击文件 -> 新建 -> 其他
- 选择 Android -> Android 如图所示测试项目,然后选择“下一步”。
创建一个新的 Android 测试项目
请写下您的测试项目的名称。按照命名规则,测试项目应命名为“Hello”。Android测试”。
根据命名规则添加测试项目名称
选择待测目标应用程序。在本例中,它是 Hello。Android,然后单击完成。
选择待测目标应用程序
创建测试套件
根据测试规范,您现在可以为测试程序创建测试套件。您可以从多种选项中进行选择。 软件测试 框架。本教程使用标准框架。 Android 测试框架 ActivityInstrumentationTestCase2. 测试用 Robotium,添加 Robotium 将库文件转换为 libs 项目文件夹内的目录。
测试用例定义了用于运行多个测试的测试环境。要定义测试用例,请遵循以下程序结构。
- 实现 TestCase 的子类。
- 定义用于存储夹具状态的实例变量。
- 通过重写 setUp() 函数来初始化 fixture 状态。
- 测试结束后,通过重写 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); } }
添加测试用例
- 在与测试套件相同的包中,创建 TestCase 类。
- 要测试某个活动,例如“你好”。Android创建一个继承自 ActivityInstrumentationTestCase2 的测试用例Android>.
- 在该类中,测试人员通过 getActivity() 方法获取被测活动。
- 您可以自由地为该活动创建测试,只需添加一个名为“test + 原始方法名称”的方法即可。
- 在测试方法内部,测试人员可以使用 Android JUnit 用于比较实际值和预期值的函数。这些方法如下所示。
下表列出了这两个框架中最常用的断言和交互方法。
示例方法 Robotium 和 Android 测试框架
上述测试套件验证应用程序 GUI 显示文本“Hello World!”并包含一个名为“开始”的按钮。
步骤 3) 运行测试
编写完测试程序后,请按照以下步骤运行测试。
- 连接一个 Android 将设备连接到您的电脑,或者如果没有真机可用,则启动模拟器。
- 在 IDE 中,右键单击测试项目,然后选择“运行方式”→ Android 单元测试。
下面的屏幕截图显示了从 IDE 启动的测试运行。
运行测试程序
除了从 IDE 运行测试之外,您还可以从命令行运行它。在本测试程序中,测试包是 com.example.helloandroid.test在 Linux 终端中,使用以下命令运行该软件包中的每个测试。
$ adb shell am instrument -w -e package com.example.helloandroid.test
步骤 4)获取测试结果
测试执行完毕后,收集测试结果。
此测试程序执行了四个测试方法。在下面的运行结果中,所有测试用例均通过。
所有测试用例通过时的测试结果输出
如果测试用例失败,则会显示输出结果,并向您展示哪些测试用例失败了。
测试用例失败时的测试结果输出
来源 Code 例子
本文包含源代码示例,可帮助您更清晰地理解教程并快速掌握技术细节。
- 您好Android:被测试的应用程序。
- 您好Android《测试》(Test):使用以下方式的测试程序 Android 测试框架。
如果你想比较 Robotium 有关此领域的其他选项,请参见 移动应用测试 指导, Appium 教程 以及综述 移动应用测试工具.

.png)
.png)
.png)



.png)

.png)
.png)

.png)
.png)