iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 2
0
自我挑戰組

Android Architecture 及 Unit Test系列 第 2

[Day 2] 架構以及 Spec

  • 分享至 

  • xImage
  •  

本文同步於 Medium

Spec

這次要做一個簡單的 Todo App,擁有以下的功能:

  1. 一個 Todo View ,上面顯示未完成或已完成的工作事項
  2. 擁有篩選的功能,顯示未完成、已完成或是全部的 Todo 事項
  3. 可以查看工作事項的細節
  4. 可以對工作事項進行增、刪、查、改
  5. 可以檢視工作事項完成度的進度圖

現在沒有規劃需要打 API 的情境,如果後續有時間再追加使用 API 的 spec。

討論完目標後,再來說說這個專案的架構

架構

Android Architecture 參考了 Clean Architecture ,基本上可以把架構大致分成三層:

  • Presentation layer
  • Domain layer
  • Data layer

Presentation 層不會直接與 Data 層接觸,ViewModel 透過數量不等的 UseCase 訪問 Repository ,所有的 UseCase 皆是在 background thread 執行,保證 UI thread 不會進行 IO 操作。

Presentation layer: ( Views+Viewmodels+DataBinding )

ViewModels 透過 LiveData 傳遞資料給 Views ,具體的實現透過 DataBinding ,避免頻煩實作一樣的程式碼。

Domain layer: ( UseCases )

將功能拆開後交由 UseCases 實現,並透過 Result(sealed class)
將結果傳出,依情況可能在後期嘗試使用 LiveData 傳遞 UseCase 的結果

Data layer

可以粗略分成 Local Data & Remote Data ,本地 DB 使用 Room ,負責資料的增刪查改等;由於這個 App 比較簡單,目前先不會實現 Remote Data ,另外在設計時會特別注意 離線使用 的情境。

Libraries and tools

除了前面提到的幾項工具外,在這次挑戰裡還有使用到一些比較重要的 Library:

  • AndroidX:本次挑戰皆使用新的 AndroidX 替代舊的 Support Library
  • Dagger 2 :處理 dependency injection
  • Timber :Logger
  • Navigation Component: UI 建立
  • MockK: 專門為 Kotlin 的 Mocking Library
  • android text:Android 官方的 testing library ,包含了 Google Truth、Espresso、Robolectric 等

架構大致介紹到這裡,明天再來討論本次核心之一: Kotlin Coroutines。


上一篇
[Day 1] 前言
下一篇
[Day 3] Kotlin Coroutines:Part 1 Basic
系列文
Android Architecture 及 Unit Test30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
jiamingla
iT邦新手 4 級 ‧ 2021-05-25 02:04:18

android text:Android 官方的 testing library ,包含了 Google Truth、Espresso、Robolectric 等
確定是android text嗎?我只是好奇這有沒有拼錯字

我要留言

立即登入留言