版权声明:本文出自胖喵~的博客,转载必须注明出处。

   转载请注明出处:http://www.cnblogs.com/by-dream/p/5503645.html

 

 

前言


  有朋友给我留言说,能否介绍一下Robotium这款框架。相信很多的朋友都听过这个框架的名字吧,没错它也是国外的一款Android自动化框架,功能比较强大,但是我个人比较钟爱谷歌原生的自动化框架,一方面是因为原生的自动化框架比较稳定,并且一直认为"谷歌出品,必是精品",另一方面很多的自动化框架都是对谷歌测试框架的再封装,比如Robotium就是对Instrumentation的封装。因此当对谷歌原生的框架有了了解后,其他框架你也就无师自通了。

  这里我想说明一下,本节以及后面介绍的Instrumentation相关的内容,对学习者的要求比较高,要求学习者必须对Android开发的知识有所了解,否则理解起来会相当的困难。所以建议在学习本节之前,可以学习一下我写的Android开发相关的前几篇文章。

 

 

简介


  在Android2.3或者更早的版本中就已经有Instrumentation这个框架了,因此在那个时间段做过Android自动化测试的同学一定对这款框架特别的熟悉。看过上一节Test Concept的我们对基本概念和框架应该已经有了简单的认识。接下来我会直接先用一个小例子来教大家如果使用这个框架。

  首先认识两个类,这两个类就是我们后面会用到的两个类:

InstrumentationTestcase:

  【Android测试】【第十六节】Instrumentation——初识+实战
ActivityInstrumentationTestCase2:
 

  【Android测试】【第十六节】Instrumentation——初识+实战   

  从类结构不难看出,下面的类是继承自上面的类,简单说明下是怎么回事,因为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。

【Android测试】【第十六节】Instrumentation——初识+实战

  这个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 }
MainActivity.java

相关文章: