編寫android業務代碼的時候,我們需要測試其正確性,那就用進行各種測試,很多時候,我們都是用的 System.out.println("XXXXX") 來進行驗證,但有時候,我們肉眼也不一定就能判斷的準確,所以可以考慮用下junit。
JUnit是個自動化單元測試工具,能夠根據你需要測試的類及其接口自動生成該類的單元測試案例,你只要根據你的需要,就輸入必要的測試數據就行了,系統運行後自動判斷運行是否成功。
下面我來介紹下如何使用JUnit來測試android項目。
由於android系統已經集成了JUnit框架,所以我們無需導入JUnit的jar包。
1、在AndroidManifest.xml文件中聲明使用JUnit測試的包名 及加載JUnit類庫代碼,如下
如上圖,<uses-library>標籤 作用是指定該應用程序必須鏈接的共享類庫。這個元素告訴系統該應用程序包的類裝載器中所包含的類庫代碼。
<instrumentation> 可以理解爲一種沒有圖形界面的,具有啓動能力的,用於監控其他類(用Target Package聲明)的工具類。任何想成爲Instrumentation的類必須繼承android.app.Instrumentation。
我們需要測試的就是項目 net.thinkeye.junitest 包下的類。
2、寫好的業務類:src/net/thinkeye/junitest/PersonService.java
- package net.thinkeye.junitest;
- /**
- * 業務類,代碼很簡單
- * @author Johnny
- */
- public class PersonService {
- /**
- * 取Person的方法
- * 因爲使用了String的substring方法,當傳入字段爲空時即報異常
- * @param name
- */
- public void getPerson(String name){
- name = name.substring(8);
- }
- /**
- * 添加Person方法
- * 可以使用Assert.assertEquals來測試其返回值的正確性
- * @param a
- * @param b
- * @return
- */
- public int addPerson(int a,int b){
- return a+b;
- }
- }
3、測試類,src/net/thinkeye/test/JTest.java 需繼承 android.test.AndroidTestCase 類
- package net.thinkeye.test;
- import junit.framework.Assert;
- import net.thinkeye.junitest.PersonService;
- import android.test.AndroidTestCase;
- /**
- * 測試類,需繼承android.test.AndroidTestCase類
- * @author Johnny
- *
- */
- public class JTest extends AndroidTestCase{
- /**
- * 測試getPerson方法
- * @throws Exception
- */
- public void testGetPerson() throws Exception{
- PersonService ps = new PersonService();
- ps.getPerson(null);
- }
- /**
- * 測試addPerson方法
- * @throws Exception
- */
- public void testAddPerson()throws Exception{
- PersonService ps = new PersonService();
- int t = ps.addPerson(2, 4);
- System.out.println(t);
- Assert.assertEquals(6, t);//junit.framework.Assert的作用判斷t值是否等於6
- }
- }
4、完成以上的步驟就可以開始測試了,如下圖
當傳入null時報異常
輸入的字符串正確時通過了測試!
addPerson方法的測試
上面就是簡單的測試例子,附上代碼: