转一个使用robotium的基本步骤
2014-10-10 16:00
267 查看
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));
附几个instrument的常用API:
ActvityMonitor:对即将被launch起来的Activity进行监控,配合着waitForMonitorWithTimeout()函数获得目标Activity的实例
EX:
![](http://top.oa.com/pictures/201011/1291031105_28.png)
Instrumentation.sendStringSync:向获得焦点的输入框输入字符串
EX:
![](http://top.oa.com/pictures/201011/1291031116_65.png)
Instrumentation.sendKeyDownUpSync:模拟一个按键操作
EX:
![](http://top.oa.com/pictures/201011/1291031128_85.png)
SystemClock.sleep():在对UI做操作的时候,可以让主线程等待UI线程执行完毕
EX:
System.Clock.sleep(1000); // 程序等待1秒钟的时间
View.findViewById():通过某个view的id来获得view实例
EX:
![](http://top.oa.com/pictures/201011/1291031167_86.png)
Instrumentation.runOnMainSync或者Activity.runOnUIThread:在另一个线程执行View的动作,并将信息同步到主线程,这两个API使用结果是一样的
EX:
![](http://top.oa.com/pictures/201011/1291031184_95.png)
Instrumentation.invokeMenuActionSync:点击菜单项
EX:
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));
附几个instrument的常用API:
ActvityMonitor:对即将被launch起来的Activity进行监控,配合着waitForMonitorWithTimeout()函数获得目标Activity的实例
EX:
![](http://top.oa.com/pictures/201011/1291031105_28.png)
Instrumentation.sendStringSync:向获得焦点的输入框输入字符串
EX:
![](http://top.oa.com/pictures/201011/1291031116_65.png)
Instrumentation.sendKeyDownUpSync:模拟一个按键操作
EX:
![](http://top.oa.com/pictures/201011/1291031128_85.png)
SystemClock.sleep():在对UI做操作的时候,可以让主线程等待UI线程执行完毕
EX:
System.Clock.sleep(1000); // 程序等待1秒钟的时间
View.findViewById():通过某个view的id来获得view实例
EX:
![](http://top.oa.com/pictures/201011/1291031167_86.png)
Instrumentation.runOnMainSync或者Activity.runOnUIThread:在另一个线程执行View的动作,并将信息同步到主线程,这两个API使用结果是一样的
EX:
![](http://top.oa.com/pictures/201011/1291031184_95.png)
Instrumentation.invokeMenuActionSync:点击菜单项
EX:
![](http://top.oa.com/pictures/201011/1291031196_24.png)
相关文章推荐
- 【备忘】使用SoapUI和Excel创建一个接口自动化测试的基本步骤
- Symbian添加一个控件的基本步骤
- ASP.NET AJAX in action第一天(ajax的基本使用步骤)
- 使用V4L进行简单视频捕捉的基本步骤
- 使用MapGuide Open Source2.1 & Maestro快速搭建一个基本的WebGIS(二)
- 使用MapGuide Open Source2.1 & Maestro快速搭建一个基本的WebGIS
- 使用ADO.NET数据库编程的基本步骤
- 如果给JS代码发布正式使用前增加一个编译步骤,我们能做些什么.
- 转载之 冲!冲!冲!NUint 使用基本步骤!
- 如果不用MFC,直接使用API写一个Windows程序,需哪些步骤?MFC是怎么做到菜单点击后,响应对应的代码的?
- 用一个实例学习VBS中使用fso对象的基本方法
- 一个获得计算机基本信息的类库使用的实例
- [JDBC技术]2.JDBC基本使用步骤(上)
- 使用Velocity基本步骤
- Symbian添加一个控件的基本步骤
- 使用.NET 2.0成员资格管理的基本步骤
- 使用Duplication创建Auxiliary Instance的基本步骤
- [JDBC技术]2.JDBC基本使用步骤(下)
- VC++ MFC SQL ADO数据库访问技术使用的基本步骤及方法
- ADO数据库访问技术使用的基本步骤及方法: