標籤: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開發單元測試