阅读更多

Robotium 是一款基于Android instrumentation framework 的自动化测试工具库,功能十分强悍,而且上手简单,只要求有Junit基础即可。

先关注instrumentation 提供的三个基类:
1. SingleLaunchActivityTestCase         单activity测试实例,只调用setup和tearDown方法
2. ActivityUnitTestCase                     单activity测试实例
3. ActivityInstrumentationTestCase2   针对多Activity测试或应用的功能性测试用例,可在UIThread中调用所有UI行为的API

怎么使用Robotium ?

在eclipse中新建Android Test Project,指定测试的项目,引入robotium-solo-4.x.jar,之后就可以编写测试单元了:

 

public class N001_TestIntorUserActivity extends           ActivityInstrumentationTestCase2{     private Solo solo;     public N001_TestIntorUserActivity() {            super(DialerActivity. class);     }     @Override     public void setUp() throws Exception {            //setUp() is run before a test case is started.            //This is where the solo object is created.            solo = new Solo(getInstrumentation(), getActivity());            try {                runTestOnUiThread( new Runnable() {                                           @Override                      public void run() {                          getActivity().getTabHost().setCurrentTab(DialerActivity. TAB_INDEX_ACCOUNT);                     }                });           } catch (Throwable e) {                e.printStackTrace();           }                }     @Override     public void tearDown() throws Exception {            //tearDown() is run after a test case has finished.            //finishOpenedActivities() will finish all the activities that have been opened during the test execution.            solo.finishOpenedActivities();     }     //第一个测试方法     public void testClickHelpbtn() throws Exception {            for( int i=0; i<10; i++) {                View helpBtn = solo.getView( "helpinfo_btn");                 solo.clickOnView(helpBtn);                 solo.sleep(2000);                 solo.goBack();           }      }          //第二个测试方法     public void testChangeTabs() throws Exception {           Random random = new Random();            for( int i=0; i<10; i++) {                 try {                      final int tabIndex = random.nextInt() % 4;                                          runTestOnUiThread( new Runnable() {                                                       @Override                            public void run() {                                getActivity().getTabHost().setCurrentTab(tabIndex);                           }                     });                } catch (Throwable e) {                     e.printStackTrace();                }                 solo.sleep(2000);           }     }}

上面例子中,测试方法均以test开头,测试框架会自动调用。在测试方法中,我们就可以使用Robotium提供的API,实现具体的测试用例。

对于只有apk包的情况,一样可以使用Robotium对其进行测试。具体思路是先使用resign工具除去apk本身的签名,然后安装apk到目标环境,新建Android Test Project,修改项目AndroidManifest中的instrumentation字段,填入apk的包名即可:

 

对比 MonkeyRunner 和 Robotium :

MonkeyRunner 优点:官方提供的测试工具,门槛极低,会写py脚本即可,适合重复性较强的UI测试或功能性测试。
                     缺点:API不完善,多限制,脚本执行性能差

Robotium 基于SDK中提供的测试框架,提供更为强大而方便的自动化测试API。要求懂得基本的Junit用法,某些场合可以完全取代 MonkeyRunner 所做白盒测试(如上面的例子),但同时也可以结合项目本身,编写测试单元,实现对代码逻辑的检查,以及输出结果的校验等测试。

共同点:
在白盒测试中,对于 MonkeyRunner 和 Robotium,建议结合 Hierarchy View 工具,分析测试目标视图的层次结构,设计具体测试用例。

 

 

 

 

 

更多相关文章

  1. Android(安卓)实现ListView异步加载图片
  2. [ZZ][Android]使用bindService启动服务
  3. Android(安卓)N调用系统安装APK方法报错原因整理及解决方案
  4. Android(安卓)多次点击事件的触发方法
  5. Android(安卓)Geofence的学习(二)继续翻译官方文档
  6. Android(安卓)结束进程的方法
  7. Android系统开发之七:添加Android(安卓)Native Service方法
  8. 2014.03.07 ——— android GridView 记录和恢复位置
  9. Android(安卓)ApiDemos示例解析(9):App->Activity->Persistent St

随机推荐

  1. Android 模拟器安装及使用教程
  2. Android软件的自动更新
  3. 欢迎进入Android的世界
  4. Android之我当年爬过的坑
  5. Android修改APP版本号
  6. Android(安卓)UI 之 我的页面 圆形图片+
  7. android最佳实践(五)
  8. Android单行显示ellipse和singleLine
  9. android基础入门(二)——创建android工程
  10. 如何安装apk文件在Android仿真器中