Skip to content

Latest commit

 

History

History
89 lines (52 loc) · 3.94 KB

README.md

File metadata and controls

89 lines (52 loc) · 3.94 KB

TDD_Tutorial

Note

簡介

此 Flutter 專案採用 Test-Driven Development (TDD) 和 Business Logic Component (BLoC) 模式。這種結合旨在提供高質量、可維護和可擴展的應用程序架構。

Test-Driven Development (TDD)

TDD 是一種軟件開發過程,它依賴於重複的短開發週期:首先編寫一個測試案例,描述一個改進或新功能,然後生成最少的代碼來通過測試,最後重構新代碼以符合標準。

優點:

  1. 提高代碼質量:通過在功能開發之前編寫測試,可以確保代碼達到預期的功能。
  2. 便於重構:有了穩定的測試套件,開發者可以自信地重構代碼,知道任何功能上的回歸都會被捕捉到。
  3. 改善設計:迫使開發者考慮問題,而不是衝動解決方案,從而導致更好的軟件設計。

Business Logic Component (BLoC)

BLoC 是一種用於分離業務邏輯和介面的架構模式。它使用 Streams 來處理輸入(事件)和輸出(狀態),從而實現介面和業務邏輯的解耦。

優點:

  1. 模組化:BLoC 提供了清晰的業務邏輯和介面分離,使得代碼更加模組化。
  2. 易於測試:業務邏輯的獨立性使得測試更加簡單,因為可以獨立於介面進行測試。
  3. 可重用性:BLoC 可以在多個介面中重用,從而提高代碼的可重用性。

為什麼選擇 TDD 和 BLoC

結合 TDD 和 BLoC 的做法使我們能夠創建出更加健壯、可測試和可維護的 Flutter 應用程序。TDD 確保代碼質量和功能性,而 BLoC 提供清晰的架構分離,這使得代碼更容易理解和維護。

在這個測試驅動開發(TDD)過程中,我們已經完成了從定義領域模型到實現數據層的重要步驟。

TDD 步驟 1 - 10: 測試驅動開發總結

步驟 1: Domain - Entities

  • 實體 (Entities):定義應用核心數據模型,如 User
  • 測試:確保實體滿足預期的數據結構和行為。

步驟 2: Domain - Repositories

  • 儲存庫 (Repositories):定義數據層和業務邏輯層之間的合約。
  • 測試:確保儲存庫正確執行數據操作和異常處理。

步驟 3: Domain - Usecases

  • 用例 (Usecases):封裝特定業務邏輯操作。
  • 測試:確保用例正確處理操作,包括成功和失敗場景。

步驟 4: Data - Model

  • 數據模型 (Model):提供實體的數據模型,包括序列化和反序列化。
  • 測試:確保數據模型正確轉換數據。

步驟 5: Data - Repositories

  • 儲存庫實現 (Repositories Implementation):實現領域層儲存庫的操作。
  • 測試:確保儲存庫實現正確執行數據操作。

步驟 6: Data - DataSources

  • 數據源 (DataSources):與外部數據源交互。
  • 測試:確保數據源正確與外部系統交互。

步驟 7: Presentation - Bloc/Cubit

  • Bloc/Cubit:管理應用的狀態和業務邏輯。
  • 測試:確保 Bloc/Cubit 正確反映狀態變化和業務邏輯。

步驟 8: Presentation - Views

  • Views:構建用戶界面和用戶交互。
  • 測試:確保界面元素正確呈現和響應用戶操作。

步驟 9: TDD - Test-Driven Development

  • 測試集成:在開發過程中積極利用測試來引導設計和確保質量。
  • 測試覆蓋:涵蓋所有關鍵部分,包括單元測試、整合測試等。

步驟 10: Dependency Injection

  • 依賴注入:通過 GetIt 管理和注入依賴。
  • 測試:確保依賴注入正確提供所需的服務和組件。

總結

整個 TDD 流程涵蓋了從實體定義到表示層構建的全面開發步驟,每一步都通過精心設計的測試來驗證和保障。這個過程不僅提高了代碼質量,也為應用的可擴展性和可維護性打下了堅實的基礎。