解讀Android官方MVP項目單元測試

發表于:2016-06-29來源:簡書作者:geniusmart點擊數: 標簽:單元測試
Google在3月份推出了一個項目,用來介紹Android MVP架構的各種組合,可以認為是官方在這方面的最佳實踐。令人稱道的是除了MVP本身之外,這些工程配備了極其完善的單元測試用例,學習

 


Google在3月份推出了一個項目,用來介紹Android MVP架構的各種組合,可以認為是官方在這方面的最佳實踐。令人稱道的是除了MVP本身之外,這些工程配備了極其完善的單元測試用例,學習價值極高。本文著重針對todo-mvp的單元測試進行解讀。官方MVP項目的Github地址是:
https://github.com/googlesamples/android-architecture

寫在前面

  1. 關于MVP
    關于MVP的介紹很多,這不是本文的重點,這里列舉近期一些比較好的文章。
  2. 關于單元測試
    對于單元測試,需要預先了解以下內容
    • Android Studio的test和AndroidTest
    • AndroidJUnitRunner:一個兼容Junit4的Andriod單元測試框架
    • Mockito:單元測試利器
    • Espresso:支持UI測試的單元測試框架
  3. 關于todo-mvp的功能

功能介紹


簡而言之,這個工程包含了三個模塊:待辦事項列表模塊,待辦事項詳情模塊,統計模塊。

MVP各層的單元測試選型

在該項目中,MVP各層所使用的單元測試框架如下圖所示:


官方todo-mvp的UT選型
  • P層:不需要任何Android環境,因此使用Junit測試即可
  • V層:使用Google強大的Espresso進行UI的測試
  • M層:涉及到數據庫相關操作,因此需要依賴Android環境,使用AndroidJUnitRunner進行測試

在此處,我們先大致了解一下MVP各層的UT選型,然后通過一個例子,看看各層之間如何配合測試,最后再對各層UT選型的原因進行分析,從而理解整體測試架構。

接下來我們以TO-DO List頁面(TasksActivity/TaskFragment)中加載任務列表功能為例,此場景的功能界面如下圖所示:


待辦任務列表

Presenter層的測試

在這個功能里,Presenter只做了一件事情,就是loadTask(),時序圖如下所示:


loadTask的時序圖]

從時序圖上看,loadTask執行的邏輯是,1.調用View層開啟進度條->2.從Model層獲取待辦任務列表->3.Model層以回調函數的形式返回數據->4.調用View層關閉進度條->5.調用View層顯示任務列表。這5個步驟里,每個步驟的邏輯是否準確是View層和Model層該測試的事情,對于Presenter層來講,他的測試任務是確保這5個步驟如期調用。為了達成此目的,我們會采用

原文轉自:http://www.jianshu.com/p/cf446be43ae8

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97