移动测试 - Robotium框架

Robotium是一个开源测试框架,用于为Android应用程序编写自动灰盒测试用例.在Robotium的支持下,测试用例开发人员可以编写功能,系统和验收测试场景,涵盖多个Android活动.

Robotium可用于测试源代码可用的应用程序和只有APK文件可用的应用程序.

Robotium的好处

  • 简单写,更短的代码.编写可靠测试用例所需的时间最短.

  • 您可以开发功能强大的测试用例,而对测试中的应用程序知之甚少.

  • 该框架自动处理多个Android活动.与标准仪器测试相比,测试用例的可读性大大提高.

  • 自动计时和延迟.

  • 自动关注当前活动.

  • 自动查找视图.

  • 不对Android平台进行修改.

  • 测试执行速度很快.

  • 由于与GUI组件的运行时绑定,测试用例更加强大.

  • 与Maven或Ant顺利集成.

Robotium的缺点

  • Robotium无法处理Flash或Web组件.

  • 它一次只处理一个应用程序.

  • 它无法模拟使用Robotium点击软键盘(需要使用'enterText()'将文本输入EditText字段)

  • Robotium无法与St.互动atus Bar通知 : 也就是说,下拉通知区域并单击指定的通知.

  • 可能有点慢,尤其是在旧设备上运行.

如何使用Robotium

第1步 : 使用Robotium的先决条件是Java SDK(最低1.6).如果您的系统上没有安装Java,请按照以下步骤进行操作.

  • 从以下位置下载JDK和JRE  Oracle技术网

  • 接受许可协议.

  • 安装JDK和JRE.

  • 设置环境变量如下面的屏幕截图所示.

环境变量

第2步 : 从 Android Studio 下载Android Studio

  • 双击exe并运行安装程序.

  • 继续使用所有默认选项.

  • 设置ANDROID_HOME.

第3步 : 安装Android图片和工具.

  • 点击SDK Manager :

SDK Manager

  • 选择必要的包装.例如,如果我们正在为Android 4.4.2构建应用程序,请确保在"工具"部分和"减号"下检查以下包:

    • Android SDK工具rev 22.6.3

    • Android平台工具rev 19.0.1

    • Android SDK Build-tools rev 19.1

第4步 : 创建Android虚拟设备.

  • 打开Android Studio,然后单击工具栏中的AVD Manager. AVD允许我们测试和运行我们的Android应用程序.

AVD Manager

  • 使用以下设置进行Nexus5 AVD :

    • 设备和减号; Nexus 5(4.95,1080 x 1920; xxhdpi)

    • 目标 : 去; Google API x86(Google Inc.) -  API等级19

    • (确保在名称中选择带有Google API的目标.)

    • CPU  : 去; Intel Atom(x86)

    • 选中"使用主机GPU"框

    • 单击"确定"

  • 您现在应该看到您在AVD管理器中创建的AVD,您可以在其中启动它,删除它或创建另一个!

第5步 :  Robotium Jar文件从 RobotiumTech 下载Robotium Jar文件

使用Robotium测试应用程序

要使用Robotium测试应用程序,请按照下面给出的步骤 : 去;

步骤1  : 去;在Android Studio中创建一个名为"RobotiumTest"的测试项目.

Robotium Test

选择所有默认选项,直至到达主页.

第2步 : 将Robotium jar文件复制到项目的Lib文件夹中.

Robot Jar Files

第3步 : 在 src 文件夹下的build.gradle文件中添加依赖项.

androidTestCompile'com.jayway.android.robotium:robotium-solo-5.5.3'

第4步 : 同步Gradle.

同步Gradle

第5步 : 创建Test类如下 :

package com.example;

import com.robotium.solo.Solo;
import android.test.ActivityInstrumentationTestCase2;
import android.widget.EditText;
import android.widget.TextView;

public class MyTestClass extends ActivityInstrumentationTestCase2<TestActivity>{

   private Solo solo;

   public MyTestClass() {
      super(TestActivity.class);
   }

   public void setUp() throws Exception {
      solo = new Solo(getInstrumentation(), getActivity());
   }

   public void testCase() throws Exception {
      String vResult="TestExample";
      EditText vEditText = (EditText) solo.getView(R.id.edit1);
      solo.clearEditText(vEditText);
      solo.enterText(vEditText,"TestExample");
      solo.clickOnButton("Submit");
      assertTrue(solo.searchText(vResult));
      TextView textField = (TextView) solo.getView(R.id.txt1);
      //Assert to verify result with visible value
      assertEquals(vResult, textField.getText().toString());
   }

   @Override
   public void tearDown() throws Exception {
      solo.finishOpenedActivities();
   }
}

第6步 : 保存所有更改.确保没有错误.

第7步 : 现在,运行测试用例.如果测试用例成功,您应该看到以下输出!

显示结果