Android----单元测试 (1)

一、Android的Junit测试


一般的JUnit我们都用过,而针对Android的JUnit也是类似于这种,显示的结果也是绿条和红条。

单元测试整体框架如下:

 

Android----单元测试 (1)_第1张图片

我们这里只介绍其中一个类:AndroidTestCase;



二、AndroidTestCase


 

程序描述:新建一个Android项目:Activity,添加一个EditText,其他不做任何事;

[java] view plain copy print ?
  1. import android.app.Activity;  
  2. import android.os.Bundle;  
  3. import android.widget.EditText;  
  4.   
  5. public class MainActivity extends Activity {  
  6.     private EditText et1;  
  7.     @Override  
  8.     public void onCreate(Bundle savedInstanceState) {  
  9.         super.onCreate(savedInstanceState);  
  10.         setContentView(R.layout.main);  
  11.         et1 = (EditText)this.findViewById(R.id.et1);  
  12.         if(savedInstanceState!=null){  
  13.             et1.setText(savedInstanceState.getString("name"));  
  14.         }  
  15.     }  
  16.     public int add(int a,int b){  
  17.         return a+b;  
  18.     }  
  19. }  

import android.app.Activity; import android.os.Bundle; import android.widget.EditText; public class MainActivity extends Activity { private EditText et1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); et1 = (EditText)this.findViewById(R.id.et1); if(savedInstanceState!=null){ et1.setText(savedInstanceState.getString("name")); } } public int add(int a,int b){ return a+b; } }

 

如果我们要进行单元测试通常有两种方法:

(1)直接在项目工程下创建单元测试

(2)创建一个Android Test Project

 

1.直接创建单元测试类


步骤1:在AndroidManifest.xml中添加如下:

[html] view plain copy print ?
  1. <application  
  2.     android:icon="@drawable/ic_launcher"  
  3.     android:label="@string/app_name" >  
  4.     <uses-library android:name="android.test.runner" /> //添加此行代码  
  5. </application>  

<application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <uses-library android:name="android.test.runner" /> //添加此行代码 </application>

 

 

[html] view plain copy print ?
  1. <application/>   
  2. <instrumentation  
  3.         android:name="android.test.InstrumentationTestRunner"  
  4.         android:targetPackage="org.xiazdong" /> //要测试的Activity所在包  

<application/> <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="org.xiazdong" /> //要测试的Activity所在包



步骤2:添加单元测试类

[java] view plain copy print ?
  1. import org.xiazdong.MainActivity;  
  2.   
  3. import android.content.Context;  
  4. import android.test.AndroidTestCase;  
  5. import android.widget.EditText;  
  6.   
  7. public class MainActivityTest extends AndroidTestCase{  
  8.     private MainActivity mainActivity;  
  9.     private Context context;  
  10.     @Override  
  11.     protected void setUp() throws Exception {  
  12.         super.setUp();  
  13.         mainActivity = new MainActivity();  //直接创建Activity实例  
  14.         context = this.getContext();//获得上下文  
  15.     }  
  16.     //测试add方法   
  17.     public void testAdd(){  
  18.         MainActivity ma = new MainActivity();  
  19.         int a = ma.add(23);  
  20.         assertEquals(5, a);  
  21.     }  
  22. }  

import org.xiazdong.MainActivity; import android.content.Context; import android.test.AndroidTestCase; import android.widget.EditText; public class MainActivityTest extends AndroidTestCase{ private MainActivity mainActivity; private Context context; @Override protected void setUp() throws Exception { super.setUp(); mainActivity = new MainActivity(); //直接创建Activity实例 context = this.getContext();//获得上下文 } //测试add方法 public void testAdd(){ MainActivity ma = new MainActivity(); int a = ma.add(2, 3); assertEquals(5, a); } }



 

测试即可;

 

2.创建单元测试工程

Android----单元测试 (1)_第2张图片


这样的好处是不用再配置AndroidManifest.xml,直接创建测试类即可;

 

 

注意:此类的单元测试因为只涉及业务逻辑,因此不能使用findViewById之类的和视图有关的函数;这里也只是测试了一个业务函数:add;

 

你可能感兴趣的:(Android----单元测试 (1))