測試 Flutter 應用
您的應用功能越多,手動測試就越困難。自動化測試有助於確保您的應用在釋出前能夠正常執行,同時保持您的功能和錯誤修復速度。
自動化測試分為幾個類別
總的來說,一個經過良好測試的應用應該有許多單元測試和 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。
有關在各種持續整合服務上執行測試的資訊,請參閱以下內容: