一、在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相同的包名