Android單元測試Junit (一)

一、在eclips中創建一個Android工程,具體信息以下:java

二、配置單元測試環境,打開AndroidManifest.xml,具體代碼以下所示:android

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.milan.junit"
    android:versionCode="1"
    android:versionName="1.0" >
    <uses-sdk
        android:minSdkVersion="16"
        android:targetSdkVersion="19" />
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.milan.junit.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>
    <!-- 聲明Android框架和目標測試包-->
    <instrumentation
        android:name="android.test.InstrumentationTestRunner"
        android:targetPackage="com.milan.junit" />
</manifest>

說明:app

      一、<uses-library android:name="android.test.runner"/> 這句,放在application內部。框架

      二、android:targetPackage 這個屬性,通常爲應用程序的包名,必須和xml中manifest節點的package同名。函數

三、建立一個包com.milan.service,這個包下面再建立一個類 Person,用於測試的時候調用。單元測試

package com.milan.service;
public class Person {
    public int getAge(String age){
        return new Integer(age);
    }
}

四、在com.milan.junit包下面,建一個PersonTest類,代碼以下:測試

package com.milan.junit;
import com.milan.service.Person;
import android.test.AndroidTestCase;
public class PersonTest extends AndroidTestCase {
    ///用例1,傳入非數字
    public void test01(){
        Person person = new Person();
        person.getAge("milan");
    }
    //用例2,傳入數字
    public void test02(){
        Person person = new Person();
        person.getAge("1");
    }
}

 五、選中PersonTest.java,右鍵選擇Run As 選擇Android Junit Test 運行單元測試,如圖:spa

從上圖能夠看到,test01的測試結果爲失敗。失敗緣由爲:java.lang.NumberFormatException: Invalid int: "milan",3d

test02的測試結果爲經過。code

若是沒有Junit運行結果,能夠在eclips的Window菜單下,選擇Show View--Other--Java--Junit 中打開。

六、運行單個測試用例

eclips的Window菜單下,選擇Show View--Other--General--Outline打開大綱視圖,右鍵測試用例,便可運行單個測試用例。如圖:

同理,若是須要執行整個項目的測試用例,可選中整個項目,用Android Junit Test運行便可。

七、斷言

當咱們得到程序的運行結果,咱們但願Junit可以自動判斷 將實際結果和指望結果是否一致。這個時候咱們就能夠用到Junit自帶的斷言。

修改PersonTest類,爲如下代碼:

package com.milan.junit;
import com.milan.service.Person;
import android.test.AndroidTestCase;
public class PersonTest extends AndroidTestCase {
    ///用例1,傳入非數字
    public void test01(){
        Person person = new Person();
        int i= person.getAge("milan");
        assertEquals(1, i);
    }
    //用例2,傳入數字,斷言有message
    public void test02(){
        Person person = new Person();
        int i= person.getAge("1");
        assertEquals("傳入數字",2,i);
    }
    //用例2,傳入數字,斷言無message
    public void test03(){
        Person person = new Person();
        int i= person.getAge("1");
        assertEquals(1,i);
    }
}

而後運行結果爲:

 

若是傳入了message,一旦用例不經過,會在右邊的錯誤詳細裏,列出message。

八、其餘斷言

JUnit提供豐富的斷言,來知足咱們不一樣的比對需求。按住Ctrl鍵,點擊代碼中的assertEquals,能夠看到Assert類裏面多支持的斷言函數的參數類型:

你們有空能夠多試試。這裏就不一一講解了。

其餘信息

如出現Test run failed:Unable to find instrumentation target package錯誤

是由於 android:targetPackage="com.milan.junit" 必須和

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.milan.junit"
package相同的包名

相關文章
相關標籤/搜索