[Android學習十一]Android開發單元測試

來源:互聯網
上載者:User

標籤:junit   android測試   


       網上關於Android單元測試的文字文章不勝枚舉,看完之後能解決問題是好事,不能解決問題那就是浪費時間和經曆。大多數文章來自於這篇文章:http://rexstjohn.com/unit-testing-with-android-studio/


       自從投入到Android Studio IDE之後基本上就賴著不走了。這裡僅討論AS(Android Studio)中Android單元測試。
 
 
      開發一個Android應用單元測試這種程式員的自我修養和基本道德測試是必不可少的。其單元測試分為兩塊,一塊是依賴Android API(平台)的單元測試,一塊是不依賴Android API的單元測試。
 
   
     1.不依賴AndroidAPI的單元測試
     
        這一塊就和通常開發JavaSE,EE應用的單元測試一樣,測試架構更加需要自行選擇即可。在通過AS建立Android應用模組時,預設在build.gradle檔案中添加了測試庫junit依賴。


     如果在AS中使用不依賴AndroidAPI的單元測試,一圖頂萬言:


650) this.width=650;" src="http://s2.51cto.com/wyfs02/M02/7A/02/wKiom1agjcCSriQ1AABZef3y67U911.png" title="uniit_test_1.png" alt="wKiom1agjcCSriQ1AABZef3y67U911.png" width="340" height="436" border="0" hspace="0" vspace="0" style="width:340px;height:436px;" />650) this.width=650;" src="http://s2.51cto.com/wyfs02/M01/7A/01/wKioL1agjf3S6xY1AABetvcjU0I158.png" title="unit_test_2.png" alt="wKioL1agjf3S6xY1AABetvcjU0I158.png" width="340" height="447" border="0" hspace="0" vspace="0" style="width:340px;height:447px;" />

               

                                 圖一                                                                                   圖二


    二所示,在Build Variants的Test Artifact設定為Unit tests之後,test源碼目錄呈現出IDEA風格的綠色目錄。 這是就可以運行測試類別或測試套件,比較容易就不多解釋了。


   2. 依賴Android API的單元測試


      2.1 AS中配置Android單元測試


       Android基於junit3架構提供了Android的單元測試架構,要在Android中使用單元測試就需要依賴android.test包下的具體類。下面是AS中配置Android單元測試的方法:


   650) this.width=650;" src="http://s5.51cto.com/wyfs02/M00/7A/03/wKiom1agjt7R8Qb7AAEg-StiPA8246.png" title="android_tester.png" alt="wKiom1agjt7R8Qb7AAEg-StiPA8246.png" />


                                                                                               圖三   

  2.2 Android單元測試樣本


    2.2.1 一個單元測試類:

   

package secondriver.heathfood.test;import android.test.InstrumentationTestCase;import com.orhanobut.logger.Logger;import secondriver.heathfood.App;import secondriver.heathfood.logic.TianGou;import secondriver.heathfood.pojo.FoodClassResult;import secondriver.heathfood.pojo.FoodDetail;import secondriver.heathfood.pojo.FoodDetailResult;/** * Author : secondriver * Created : 2016/1/20 */public class TestTianGou extends InstrumentationTestCase {    public TianGou tianGou;    public void setUp() {        tianGou = new TianGou(App.restTemplate());    }    public void test_queryFoodClassByParentId1() {        FoodClassResult result = tianGou.queryFoodClassByParentId(0);        assertTrue(result.isStatus());    }}

 


  

    關於Android的單元測試基類參見:

   http://www.oschina.net/question/54100_27061?fromerr=NydwIvQR 。

   http://www.uml.org.cn/mobiledev/201306074.asp

   

   注意:Android單元測試的測試類別寫法遵循的是Junit3.

 

   2.2.2 執行單元測試

   

   在執行單元測試之前,講Build Variant的Test Artifact設定為圖一所示值。  


   執行Android Tester之後,輸出:


  650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/7A/03/wKiom1agkCewIdOgAAA9lXBzGLg080.png" title="android_test.png" alt="wKiom1agkCewIdOgAAA9lXBzGLg080.png" />

                                  圖四

  從上得知未授網路訪問權許可權。


  2.2.3 AS中Android單元測試控制台

650) this.width=650;" src="http://s2.51cto.com/wyfs02/M02/7A/03/wKiom1agkKiTGT5pAABnZo5LjPQ465.png" title="android_tester_console.png" alt="wKiom1agkKiTGT5pAABnZo5LjPQ465.png" />

                                      圖五



   在網上找關於Android單元測試的案例時,比較雜亂,遂作此文予以整理,Android單元測試如何去做當是另外的主題,需要參考android.test包中提供的具體類。



 文中的android測試類別的包直接建立在了main代碼目錄下,比較好的方式如下Android測試代碼目錄結構圖:


 650) this.width=650;" src="http://s1.51cto.com/wyfs02/M01/7A/03/wKiom1agl5rAgMotAABZK25bMQk778.png" title="android_tester_directory_structure.png" alt="wKiom1agl5rAgMotAABZK25bMQk778.png" />

               圖 六

本文出自 “野馬紅塵” 部落格,請務必保留此出處http://aiilive.blog.51cto.com/1925756/1737254

[Android學習十一]Android開發單元測試

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.