您的應用功能越多,手動測試就越困難。自動化測試有助於確保您的應用在釋出前能夠正常執行,同時保持您的功能和錯誤修復速度。

自動化測試分為幾個類別

  • 單元測試 會測試單個函式、方法或類。
  • Widget 測試(在其他 UI 框架中稱為 元件測試)會測試單個 Widget。
  • 整合測試 會測試完整的應用或應用的大部分內容。

總的來說,一個經過良好測試的應用應該有許多單元測試和 Widget 測試,透過 程式碼覆蓋率 進行跟蹤,再加上足夠的整合測試來覆蓋所有重要的用例。這個建議基於不同型別的測試之間存在權衡,如下表所示。

權衡單元小部件整合
信心較高最高
維護成本較高最高
依賴項最多
執行速度

單元測試

#

單元測試 會測試單個函式、方法或類。單元測試的目的是在各種條件下驗證邏輯單元的正確性。被測試單元的外部依賴項通常會被 模擬。單元測試通常不讀取或寫入磁碟、不在螢幕上渲染、也不接收來自測試執行程序之外的使用者操作。有關單元測試的更多資訊,您可以檢視以下示例或在終端中執行 flutter test --help

示例

#

Widget 測試

#

Widget 測試(在其他 UI 框架中稱為 元件測試)會測試單個 Widget。Widget 測試的目的是驗證 Widget 的 UI 看起來和互動是否符合預期。測試 Widget 涉及多個類,並需要一個提供適當 Widget 生命週期上下文的測試環境。

例如,被測試的 Widget 應該能夠接收使用者操作和事件並響應,執行佈局,並例項化子 Widget。因此,Widget 測試比單元測試更全面。但是,與單元測試一樣,Widget 測試的環境會替換為比完整 UI 系統簡單得多的實現。

示例

#

整合測試

#

整合測試 會測試完整的應用或應用的大部分內容。整合測試的目的是驗證正在測試的所有 Widget 和服務是否按預期協同工作。此外,您還可以使用整合測試來驗證應用的效能。

通常,整合測試 會在真實裝置或作業系統模擬器(如 iOS Simulator 或 Android Emulator)上執行。被測試的應用通常會與測試驅動程式碼隔離,以避免扭曲結果。

有關如何編寫整合測試的更多資訊,請參閱 整合測試頁面

示例

#

持續整合服務

#

持續整合 (CI) 服務允許您在推送新程式碼更改時自動執行測試。這可以及時提供反饋,表明程式碼更改是否按預期工作且沒有引入 bug。

有關在各種持續整合服務上執行測試的資訊,請參閱以下內容: