◆版权声明:本文出自胖喵~的博客,转载必须注明出处。
转载请注明出处:http://www.cnblogs.com/by-dream/p/5503645.html
前言
有朋友给我留言说,能否介绍一下Robotium这款框架。相信很多的朋友都听过这个框架的名字吧,没错它也是国外的一款Android自动化框架,功能比较强大,但是我个人比较钟爱谷歌原生的自动化框架,一方面是因为原生的自动化框架比较稳定,并且一直认为"谷歌出品,必是精品",另一方面很多的自动化框架都是对谷歌测试框架的再封装,比如Robotium就是对Instrumentation的封装。因此当对谷歌原生的框架有了了解后,其他框架你也就无师自通了。
这里我想说明一下,本节以及后面介绍的Instrumentation相关的内容,对学习者的要求比较高,要求学习者必须对Android开发的知识有所了解,否则理解起来会相当的困难。所以建议在学习本节之前,可以学习一下我写的Android开发相关的前几篇文章。
简介
在Android2.3或者更早的版本中就已经有Instrumentation这个框架了,因此在那个时间段做过Android自动化测试的同学一定对这款框架特别的熟悉。看过上一节Test Concept的我们对基本概念和框架应该已经有了简单的认识。接下来我会直接先用一个小例子来教大家如果使用这个框架。
首先认识两个类,这两个类就是我们后面会用到的两个类:
InstrumentationTestcase:
ActivityInstrumentationTestCase2:
从类结构不难看出,下面的类是继承自上面的类,简单说明下是怎么回事,因为Android当中有四大组件:Activity、service、Content Provider和Broadcast Receiver ,而四大组件的特性都很分明,而Activity做为我们可见的与我们接触最多的一个组件,我们在自动化的时候难免和它打交道比较多,因此将它单拉出来说明一下,我在最开始的例子中会首先使用它们的父类InstrumentationTestcase来进行讲解。
源码地址:http://124.16.141.157/lxr-0101/source/frameworks/base/core/java/android/test/InstrumentationTestCase.java?v=android-5.1
源码地址:http://124.16.141.157/lxr-0101/source/frameworks/base/test-runner/src/android/test/?v=android-5.1
源程序
这里的源程序指的就是被测程序,也就是我们要测试App,这里我自己写了一个简单App,用来作为我们的测试demo。
这个App一共两页面。第一个页面中我们可以输入两个整数,然后按下查看结果按钮,就会跳到第二个页面,第二个页面就会显示出结果。
第一个页面的代码和布局:
1 package com.bryan.calc; 2 3 import com.bryan.calc.R; 4 5 import android.app.Activity; 6 import android.content.Intent; 7 import android.os.Bundle; 8 import android.view.View; 9 import android.view.View.OnClickListener; 10 import android.widget.Button; 11 import android.widget.EditText; 12 13 public class MainActivity extends Activity 14 { 15 // 定义变量 16 EditText num1 = null; 17 EditText num2 = null; 18 Button btn = null; 19 20 @Override 21 protected void onCreate(Bundle savedInstanceState) 22 { 23 super.onCreate(savedInstanceState); 24 setContentView(R.layout.activity_main); 25 26 // 初始化控件 27 num1 = (EditText)findViewById(R.id.num1); 28 num2 = (EditText)findViewById(R.id.num2); 29 btn = (Button)findViewById(R.id.btn); 30 31 btn.setOnClickListener( new getRes()); 32 } 33 34 // 按钮的事件响应 35 class getRes implements OnClickListener 36 { 37 @Override 38 public void onClick(View arg0) 39 { 40 int n1 = Integer.parseInt(num1.getText().toString()); 41 int n2 = Integer.parseInt(num2.getText().toString()); 42 GetResult(n1, n2); 43 } 44 } 45 46 // 得到结果,并且调起计算结果页面 47 public void GetResult(int num1, int num2 ) 48 { 49 Intent intent = new Intent(); 50 intent.putExtra("res", num1+num2); 51 intent.setClass(MainActivity.this, ResultActivity.class); 52 startActivity(intent); 53 } 54 }