移动终端游戏将在公司发展计划中占有很大的比重。安卓系统在移动终端市场占有很大的一个市场,探索安卓系统下的 自动化测试对公司发展有积极的意义。
ANDROID自动化测试工具:ROBOTIUM
ROBOTIUM的介绍
Robotium是一款测试Android Application的测试框架,它使得编写 黑盒测试代码更加容易和稳定。通过使用Robotium, 测试用例开发人员能够跨越多个Activity,开发出功能、系统以及验收测试用例。Robotium是基于Android测试框架InstrumentationTestCase2进行的2次封装,把一些基本操作又简化了一遍。
ROBOTIUM的优势: 针对黑盒测试 在测试过程中,不必需要测试程序的源代码,只要apk文件(前提是需要知道测试程序的package和activity) 可以直接运行在 手机上,并通过adb端获得运行结果。 在使用该工具的时候有一点必须:当编辑完测试脚本后,会生成一个apk文件,将该apk安装到手机端,并通过abd输入一系列命令后直接运行测试脚本。但该apk的签名必须要与测试程序的apk签名保持一致。
ROBOTIUM的环境设置
 JDK (Java Development Kit)
 Eclipse for building Testproject
 ADT (Android Development Tools)
 Android SDK (Software Development Kit)
 Robotium-solo-*.*.*.jar
ROBOTIUM进行测试的方法和步骤
1、创建测试项目

点击Next

填写项目取的名称

选择被测工程,如之前创建的firstHello,点击Next按钮。

会主动选择和输入Build Target,可以遵守默认的,不消批改。
点击Finish,一个测试项目创建好了。

2、项目中导入ROBOTIUM.JAR
选择测试工程右击,选择Build Path->Configure Build Path

3、创建测试脚本CLASS。

创建之后脚本:
测试脚本
package com.example.firsthello.test;
import android.test.ActivityInstrumentationTestCase2;
import com.example.firsthello.MainActivity;
import com.jayway.android.robotium.solo.Solo;
public class UITextTest extends ActivityInstrumentationTestCase2<MainActivity> {
private Solo solo;
@SuppressWarnings("deprecation")
public UITextTest() { //初始化函数 告诉系统要测试的APP是什么。
super("com.example.firsthello.MainActivity",MainActivity.class);
// TODO Auto-generated constructor stub
}
//每一个test case 都会调用setUp进行初始化
public void setUp() throws Exception
{
solo= new Solo(getInstrumentation(),getActivity());
}
// 测试具体实例
public void testUI()throws Exception
{
boolean expected =true;
boolean actual =solo.searchText("Hello")&& solo.searchText("world!");
assertEquals("This and/or is are not found",expected,actual);
}
} 测试
robotium测试总结
1、测试类要继承ActivityInstrumentationTestCase2<测试类类名>
2、构造方法中super("包名", 测试类类名.class);
3、setUp方法中solo = new Solo(getInstrumentation(), getActivity());
4、tearDown方法中
try {
solo.finalize();
} catch (Throwable e) {
e.printStackTrace();
}
getActivity().finish();
super.tearDown();
5、点击自动化
clickOnMenuItem("菜单名")
clickInList(列表行数) 注:从1开始
clickOnText("(?i).*?test.*") 点击文本
clickLongOnText("Note 2") 长时间点击文本
clickOnButton("按钮名") 点击按钮
6、输入自动化
enterText(号,"输入的内容")
7、屏幕控制
setActivityOrientation(Solo.LANDSCAPE或Solo.PORTRAIT) 控制屏幕横向或纵向显示
8、跳转
goBack() 模仿硬返回键
goBackToActivity("Activity名") 跳到指定的Activity
9、判断
判断当前是否是指定的Activity
assertCurrentActivity("测试提示", "Activity名");
搜索指定文本是否存在
searchText("搜索文本")或searchText("(?i).*?note 1 test") 后面这个是正则表达式
10、获取
(EditText) solo.getView(R.id.EditText01);
(TextView) solo.getView(R.id.TextView01);
ArrayList currentTextViews = solo.getCurrentTextViews(outputField); 11、点击按钮等测试中需要注意2点:
(1)真机测试时发现,屏保后点击按钮测试会报找不到该按钮,也就是点不中的意思,看来测试机器人还真仿真啊。
(2)点击按钮后有个延迟的过程,以后的测试需要循环等待一段时间,否则直接进入下面的测试后误报错错误,此处处理示例如下:
// 点击按钮开启服务
solo.clickOnButton(butStartService);
// 判断指定服务是否存在
long start = System.currentTimeMillis();
while (!isServiceStarted(SERVICE_PACKAGE_NAME)) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
if ((System.currentTimeMillis() - start) > TIMEOUT) {
break;
}
}
assertTrue("没有开启服务", isServiceStarted(SERVICE_PACKAGE_NAME));

更多相关文章

  1. 深入分析Android(安卓)(build/core/*.mk脚本)
  2. Android(安卓)虚拟机常用快捷键
  3. 使用LinearLayout线性布局编写左上右上左下右下中央
  4. Android(安卓)OTA 升级之五:updater
  5. Appium 在 Android(安卓)UI 测试中的应用
  6. Android(安卓)使用Oprofile分析结果系统瓶颈
  7. Android(安卓)Build (1) -- Source Code Build Steps
  8. 安卓真机appium环境配置
  9. Ruby实现Android自动化屏幕适配

随机推荐

  1. Android开发实例详解之IMF(Android(安卓)S
  2. android:layout_weight让layout自动调整
  3. Android(安卓)UI组件
  4. Android(安卓)安全机制
  5. 跟我学android应用开发 之 第一个Android
  6. Android应用的跨语言调用小结
  7. Android(安卓)ADB工具使用
  8. Android(安卓)基础总结:(七)BroadcastReceiv
  9. Android(安卓)sharedUserId数据权限
  10. Android实现在一个activity中添加多个lis