Android学习笔记之如何对应用进行单元测试

开发环境:

Win XP + eclipse-jee-helios(版本号3.6) + ADT(版本10.0.1) + Android SDK(版本10);

模拟器及真机测试环境:Android2.2


   在Android软件的开发过程中,可以使用Junit测试框架。在Junit中可以得到组件,可以模拟发送事件和测试程序处理的正确性。

   第一步:在新建项目中,创建待测试的业务类,在cn.hao.service包中,代码如下:

package cn.hao.service;
//业务类,待测试的两个方法
public class PersonaService {
                                                                                                                                                                                                                                                                      
    public void save(String username){
        String sub = username.substring(6);
    }
                                                                                                                                                                                                                                                                      
    public int add(int a,int b){
        return a+b;
    }
}

说明:对于save()方法,如果参数为null,那么这个方法会发生错误;对add()方法,我们测试相加返回的相加结果是否正确。

   第二步:为应用引进单元测试环境

   在AndroidManifest.xml中加入如下代码:

<uses-library android:name="android.test.runner"/>

<instrumentation android:name="android.test.instrumentationTestRunner"
  android:targetPackage="cn.hao.JunitTest" android:label="Test for My App" />

引入的位置如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="cn.hao.JunitTest"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="8" />
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name="cn.hao.test.MainActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <uses-library android:name="android.test.runner"/>
    </application>
                                                                                                                                                                                                             
    <instrumentation android:name="android.test.instrumentationTestRunner"
        android:targetPackage="cn.hao.JunitTest" android:label="App Test"
    />
</manifest>

说明:在项目中使用单元测试,就是检查程序及处理结果的正确性。

   第三步:新建一个类,测试业务类,代码如下:

package cn.hao.junit;
import junit.framework.Assert;
import cn.hao.service.PersonaService;
import android.test.AndroidTestCase;
public class PersonServiceTest extends AndroidTestCase {
                                                                                                                                      
    public void testSave() throws Exception {
        PersonaService service = new PersonaService();//new出测试对象
        service.save(null);
    }
                                                                                                                                      
    public void testAdd() throws Exception {
        PersonaService service = new PersonaService();
        int actual = service.add(1, 2);
        Assert.assertEquals(3, actual);
    }
}

注意:该类需继承单元测试框架父类android.test.AndroidTestCase,测试方法最好是抛出异常给测试框架。方法Assert.assertEquals(3, actual)中参数3是期望(理论上)返回的果,actual是实际上返回的结果。

   第四步:运行测试类

   在大纲OutLine视图中,右击测试方法->Run As->Android Junit Test,会将项目自动部署到模拟器上,测试的结果会以颜色的形式显示,绿色表示方法正确,否则该方法不正确,Eclipse会给出详细的说明,根据帮助文档可以查看相应的错误信息。

   如测试上述testSave()方法时,会给出如下提示:

   当然,save()从第六位开始取子字符串,但是该方法现在的参数为null,会发生空指针异常。

你可能感兴趣的:(android)