Robotium 教程:你的第一个 Android 骨架

什么是 Robotium?

Robotium 是一个 Android 测试框架,用于自动化本机和混合应用程序的测试用例。使用 Robotium,开发人员可以为 Android 应用程序。此外,开发人员可以编写功能、系统和验收测试场景,将许多 Android 活动。

Robotium 测试框架

标准版 Android 测试框架存在如下一些限制

  • 无法处理多项活动
  • 测试执行性能缓慢
  • 测试用例复杂且难以实施

机器人馆框架 是进行测试的更好选择 Android 应用的区域

Robotium 是一个开源框架,被认为是 Android 测试框架。使用 Robotium,开发人员可以创建强大的自动 GUI 测试用例, Android 应用程序。此外,开发人员可以编写功能、系统和验收测试场景,跨越多个 Android 活动。

Robotium 的高级功能
Robotium 的高级功能

Robotium 测试用例类

Robotium 使用一组类(com.jayway.android.robotium.solo) 进行测试。此类支持跨多个活动的测试用例。Solo 与 ActivityInstrumentationTestCase2 集成。

Robotium 测试用例类
集成 Robotium 和 ActivityInstrumentationTestCase2

测试人员可以使用 Robotium 测试用例类编写测试用例,而无需了解应用程序设计(黑盒测试)。与 Android 测试用例类。

如何使用 Robotium

在您的 Android 测试项目,您需要按照以下步骤操作

使用 Robotium

使用 Robotium 进行测试 Android 申请。为了保证您的 Android 申请时,请遵循以下步骤

  1. 设计测试规范
  2. 开发测试程序
  3. 执行 测试用例 在目标设备上
  4. 收集测试结果
Android 应用的区域
Android 应用程序测试程序 测试 程序

步骤1)设计测试规范

  • 这是测试应用程序的第一步。在此步骤中,您将定义要测试的目标。在您的 Android 应用程序中有许多目标需要测试,例如 UI、Activity、组件、服务。在应用程序中明确定义目标将有助于实现广泛的测试覆盖范围。
  • 计划应进行的测试类型(单元测试、功能测试、系统测试)。
  • 设计测试用例以达到最大覆盖率,但尽量减少测试用例数量。测试的代码越多,越有可能尽早发现错误。

步骤2)编写测试程序

本节指导您如何编写 Android 测试程序使用 Android 朱尼特 测试和 Robotium。假设你已经开发了一个 Android 程序名称 HelloAndroid本程序具有如下所述的一些功能:

  • 在屏幕上显示文字“Hello world!”。
  • 显示消息 HelloAndroid 当用户按下“开始”按钮时
您好Android 应用程序
您好Android 应用程序

系统要求

  • Android 平台带有预集成 JUnit 3.0框架。
  • 为了创造 Android 测试项目来自 Eclipse,你的计算机必须安装:
  • 最新版本 Android 平台(目前 Android 8.1)

您还可以 下载 Eclipse 带有内置 ADT 的 IDE(Android 开发者工具)。它包括必要的 Android SDK 组件和版本的 Eclipse 集成开发环境 (IDE)。

对于 Robotium 测试框架,您需要从 Robotium 网页.

创建 Android 测试项目

  • 单击文件 -> 新建 -> 其他
  • 选择: Android -> Android 按照下图测试项目 -> 选择下一步
创建新 Android 测试项目
创建新 Android 测试项目

写下你的测试项目的名称。按照命名惯例,你的测试项目应该命名为“HelloAndroid测试”

根据命名约定添加测试项目名称
根据命名约定添加测试项目名称

选择要测试的目标应用程序。在本例中为 HelloAndroid 点击完成

选择 Target 被测应用
选择要测试的目标应用程序

创建测试套件

根据你的测试规范,你开始为你的测试程序创建测试套件。你可以选择各种测试框架。在本教程中,我选择标准 Android 测试框架 活动仪器测试用例2。如果您想使用 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、创建测试用例范围 ActivityInstrumentationTestCase2Android>
  • 在这个类中,测试人员可以通过getActivity()方法获取测试活动。
  • 您可以通过创建名为“测试+原始方法名称”的方法自由地为测试活动创建测试
  • 在测试方法中,测试人员可以使用 Android JUnit 函数来比较实际值和预期值。这些方法如下所示。
Robotium 的示例方法和 Android 测试框架
Robotium 的示例方法和 Android 测试框架

上述测试套件验证了应用程序 GUI 必须显示文本“Hello World!”,并包含一个名为“Start”的按钮。

步骤 3) 运行测试

编写完测试程序后,按照以下步骤运行测试

  • Connect Android 设备连接到您的电脑(如果您没有真实设备,则启动模拟器)。
  • 在你的 IDE 中,右键单击àRun asàAndroid 单元测试
运行测试程序
运行测试程序

除了在 IDE 上运行测试,你也可以在命令行上运行测试。在这个测试程序中,测试包是 com.example.helloandroid.test 。在 Linux 终端,您可以使用以下命令运行此包中的所有测试:

$ adb shell am Instrument -w -e 包 com.example.helloandroid.test

步骤 4)获取测试结果

测试执行后,您将获得测试结果。

该测试程序共执行了4个测试方法,所有测试用例均通过。

所有测试用例通过时的测试结果输出
所有测试用例通过后输出测试结果

如果测试用例失败,则会显示输出并显示哪些测试用例失败

所有测试用例失败时的测试结果输出
所有测试用例失败时输出测试结果

源代码示例

本文包含一些源代码示例,帮助您更清楚地理解教程并快速掌握技术知识