網上關於Android單元測試的文字帖子不勝枚舉,看完以後能解決問題是好事,不能解決問題那就是浪費時間和經歷。大多數文章來自於這篇文章:http://rexstjohn.com/unit-testing-with-android-studio/java
自從投入到Android Studio IDE以後基本上就賴着不走了。這裏僅討論AS(Android Studio)中Android單元測試。
開發一個Android應用單元測試這種程序員的自我修養和基本道德測試是必不可少的。其單元測試分爲兩塊,一塊是依賴Android API(平臺)的單元測試,一塊是不依賴Android API的單元測試。
1.不依賴AndroidAPI的單元測試
這一塊就和一般開發JavaSE,EE應用的單元測試同樣,測試框架更加須要自行選擇便可。在經過AS建立Android應用模塊時,默認在build.gradle文件中添加了測試庫junit依賴。
若是在AS中使用不依賴AndroidAPI的單元測試,一圖頂萬言:android
圖一 圖二程序員
如圖二所示,在Build Variants的Test Artifact設置爲Unit tests以後,test源碼目錄呈現出IDEA風格的綠色目錄。 這是就能夠運行測試類或測試套件,比較容易就很少解釋了。android-studio
2. 依賴Android API的單元測試網絡
2.1 AS中配置Android單元測試框架
Android基於junit3框架提供了Android的單元測試框架,要在Android中使用單元測試就須要依賴android.test包下的具體類。下面是AS中配置Android單元測試的方法:ide
圖三 單元測試
2.2 Android單元測試示例測試
2.2.1 一個單元測試類:gradle
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.FoodCla***esult; 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() { FoodCla***esult 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以後,輸出截圖:
圖四
從截圖上得知未授網絡訪問權權限。
2.2.3 AS中Android單元測試控制檯
圖五
在網上找關於Android單元測試的案例時,比較雜亂,遂做此文予以整理,Android單元測試如何去作當是另外的主題,須要參考android.test包中提供的具體類。
文中的android測試類的包直接建立在了main代碼目錄下,比較好的方式以下Android測試代碼目錄結構圖:
圖 六