一、什么是Robotium
Robotium是一款类似Selenium但面向Android端的开源自动化测试框架,既支持测试Native应用,也支持Hybrid应用(混合开发),兼具Native APP良好的用户交互体验的优势以及Web APP跨平台、易变更的又是;既支持黑盒形式的自动化测试,也支持白盒形式的自动化测试。通过Robotium用户可以编写出更强大健壮的UI自动化测试用例,并可以应用在功能测试、系统测试、用户验收测试等多种测试场景中。
Robotium的优势:
(1)、同时支持Native应用和Hybrid应用
(2)、由于是基于Instrumentation的测试,测试代码运行与被测应用所在的进程,控件识别与模拟UI事件都可以快速执行,因此测试用例执行速度更快。
(3)、由于是通过在运行时识别控件而非通过固定坐标的方式,因此测试用例可以更健壮。
(4)、由于支持黑盒方式,不需要深入了解被测应用即可开展测试,因此编写用例花费的时间可以更少。
(5)、由于可以通过Maven、Gradle或者Ant运行测试用例,因此可以很好的作为持续集成的一部分。
Robotium的缺点:
(1)、由于是基于Instrumentation的事件发送,因此无法跨应用。
(2)、代码运行在被测进程,可能影响被测进程的内存、CPU占用,若用于性能监控数据会有误差。
二、开发环境搭建(基于Eclipse)
1、新建工程选择Android Test Project
2、建立项目名称后关联你要被测的项目(原谅我万恶的马赛克)
3、target SDK版本要与被测项目相同,点击Finish
4、在测试工程中引入Robotium的jar包
这里写链接内容
5、创建一个测试类继承ActivityInstrumentationTestCase2并且创建构造方法
ps:MainActivity是你要测试的Activity,需要将被测项目的Activity手动import到测试工程
6、一个简单的测试用例代码
public class Test extends ActivityInstrumentationTestCase2<MainActivity> {
private Solo solo;
public Test() {
super(MainActivity.class);
}
@Override
protected void setUp() throws Exception {
// 测试开始时调用
// super.setUp();
// 初始化solo对象
solo = new Solo(getInstrumentation(), getActivity());
}
/***
* @throws Exception
* 这个方法名称随机取,是用来进行测试用例的方法
*/
public void testCase() throws Exception {
// 获取到被测Activity的UI控件,我这里以获取一个Button和点击为例
Button button = (Button) solo.getView(R.id.btn_register);
solo.clickOnView(button);
}
@Override
protected void tearDown() throws Exception {
// 测试结束时调用
// super.tearDown();
solo.finishOpenedActivities();
}
}
7、如果测试通过
会显示绿条,测试未通过会显示红色进度并会报相应的Log