qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          在android中進行單元測試

            在開發過程中,無論是什么語言,如果能夠熟練使用單元測試, 提高的效率那是大大地,當測試或某相關的小姑娘報bug的時候,站在你身邊,用無辜的大眼睛對 你說,“公子,有地方出問題”,正要打開相關的應用程序或者頁面重現那個問題時,你大臂一揮,“XJ,不用那么麻煩,看在下的”,打開單元測試一跑,三下 兩下搞定問題,那些連myeclipse都不知道怎么拼的MM,看到這一幕,能不五體投地嗎?如果公司都是大老爺們,那首先要做的就和老板提意見,然后再 看下文。

            android的單元測試很簡單,首先,新建一個android project。然后新建一個android test project,File-->Project-->Android-->Android Test Project。然后會彈出一個對話框“New Android Test Project”,填入工程名,在“an existing Android Project”中選擇要單元測試的工程,其實就和那個東西掛鉤,理解為母體和寄生蟲的關系也未嘗不可。當選擇好Android Project工程之 后,下面的那些包名之類的自然就自動填好了。點“finish”,一個android test project就OK了--如果不是太倒霉的話。

             android test project工程下的目錄結構和android project差不多,只是src下的package下多一個test包。接下來就開始創建junit了,像平常添加新類那樣右擊 包,New-->Junit Test Case,接下來就填junit名字,選擇“New Junit3.0 Test”,Junit4.0沒試過,但由于某些原因Junit4不一定能體現出Junit的特性來,一會說,現在不說,伏筆很重要,我的地盤我做 主...在下面吧setUp勾上。“finish”,現在就可以寫測試

            代碼,具體的實例代碼如下:

          import java.util.ArrayList;
          import java.util.HashMap;
          import java.util.List;
          import java.util.Map;

          import com.helloAndroid.Books;
          import com.helloAndroid.HelloAndroid;
          import com.helloAndroid.R;

          import android.R.xml;
          import android.test.ActivityInstrumentationTestCase2;
          import android.widget.ListView;
          import android.widget.SimpleAdapter;


          public class Junit3 extends ActivityInstrumentationTestCase2<Books> {

          ListView listView;
          Books books;

          public Junit3() {
          super("com.helloAndroid.HelloAndroid" ,Books.class);
          // TODO Auto-generated constructor stub
          }

          protected void setUp() throws Exception {
          super.setUp();
          books = this.getActivity();


          }

          //添加testPreconditions()方法,檢查初始化環境,只執行一次
          public void testPreconditions() {

                //assertNotNull(integer);

          }

          //添加單元測試
          public void testText() {

                //assertEquals(resourceString,(String)mView.getText());
          List<Map<String, Object>> resourceName = new ArrayList<Map<String,Object>>();
          Map<String ,Object> map = new HashMap<String, Object>();

          map.put("line1", "測試Junit");
          map.put("img", R.drawable.weikexue);
          resourceName.add(map);

          //listView = (ListView)books.findViewById(com.helloAndroid.R.id.l)
          SimpleAdapter notes = new SimpleAdapter(
          books,
          resourceName,
          R.layout.rows,
          new String[]{"line1" ,"img"},
          new int[]{R.id.text1,  R.id.img});

          //books.setListAdapter(notes);
              }

          }

             必須繼承這個類ActivityInstrumentationTestCase2,通過泛型把要單元測試的目標類聯系起 來,ActivityInstrumentationTestCase2<Books>,Books就是目標類,setUp() 方法是自動生成,因為剛才在創建的時間把“setUp()”的選項卡勾上了,如果沒勾上的話,就重寫一個,然后寫兩個方法 testPreconditions()和testText(),testText是單元測試的執行類,testPreconditions()不知道具 體干嘛的,千萬切記要把這三個方法都寫出來,否則報出來的錯,你去google都搜不到解決方法。由于必須得有這三個類,而Junit4里是通過 annotation的方式標注測試的行為,android test project中用junit4可能會達不到預期效果,沒測試過,反正在junit里少那三個方法,也是不行的,這是實踐過的。

            最簡單的單元測試就這樣了。android的單元測試也是有一個很大的框架,ActivityInstrumentationTestCase2上面也繼承了好多層。

          posted on 2012-09-04 10:05 順其自然EVO 閱讀(607) 評論(0)  編輯  收藏 所屬分類: android

          <2012年9月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 安化县| 广平县| 杭锦后旗| 南开区| 青州市| 通河县| 济源市| 乾安县| 习水县| 醴陵市| 庆云县| 赤峰市| 渝中区| 秦安县| 乌拉特后旗| 河曲县| 方城县| 峨眉山市| 顺平县| 巴林右旗| 白玉县| 普宁市| 阳东县| 炉霍县| 金华市| 勃利县| 商都县| 兴文县| 周口市| 阜康市| 丹巴县| 瑞安市| 蒲江县| 邵阳县| 临泽县| 威宁| 商丘市| 武威市| 博湖县| 英山县| 宜兰市|