測試 Flutter 應用

通常一個應用的功能越多,手工測試就越困難。自動化測試在釋出之前執行,有助於保證我們應用的穩定性和功能的完整性,並且可以快速修復問題。

自動化測試可分為以下幾類:

  • 單元測試 測試單一的函式,方法或類別。

  • Widget 測試(在其他 UI 框架中指 元件測試)測試單一的 widget 。

  • 整合測試 測試一個完整的應用或者一個應用的大部分功能。

一般來說,在自動化測試方面做的比較好的應用會有許多單元測試和 widget 測試,並且使用 程式碼覆蓋率 進行追蹤,還會有足夠的整合測試來覆蓋所有的重要使用場景。這樣做是因為不同型別的測試之間需要權衡,如下所示:

  單元測試 Widget 測試 整合測試
置信度 較高 最高
維護成本 較高 最高
依賴程度 較多 最多
執行速度 較慢

單元測試

單元測試 測試單一的函式,方法或類別。單元測試的目標是驗證邏輯單元在各種條件下的正確性。被測試單元的外部依賴通常需要 模擬。單元測試通常不會讀寫磁碟,將資料渲染到螢幕,也不會從執行測試處理序的外部去接收使用者的操作。你可以在終端執行 flutter test --help 命令獲得更多有關單元測試的幫助:

Recipes

更多資訊

Widget測試

Widget 測試(在其他 UI 框架中指 元件測試)是用來測試單一的 widget, widget 測試的目標是驗證 widget 的 UI 表現和互動行為是否符合預期。測試一個 widget 涉及多個類,並且測試環境需要提供具有 widget 生命週期的上下文。

例如,被測試的 widget 可以接收和響應使用者操作和事件,進行佈局並例項化子 widget。所以,widget 測試比單元測試更全面。但是,就像單元測試一樣,widget 測試環境實現上比成熟的 UI 系統簡單得多。

Recipes

更多資訊

整合測試

整合測試 測試一個完整的應用或者一個應用的大部分功能。整合測試的目標是驗證正在測試的所有 widget 和服務是否按照預期的方式一起工作。此外,還可以使用整合測試來驗證應用的效能。

通常情況下,一個 整合測試 執行在真機或 OS 模擬器上,如 iOS 模擬器 (iOS Simulator) 或 Android 模擬器 (Android Emulator) 。測試中的應用通常與測試驅動程式程式碼隔離,以避免結果出現偏差。

更多關於如何編寫整合測試的相關資訊,請參閱整合測試文件

Recipes

更多資訊

持續整合服務

持續整合 (CI) 服務允許我們在推送新程式碼(程式碼變更)時自動執行測試。當代碼變更後,會立即收到關於程式碼是否仍按預期工作、是否引入新問題的反饋。

有關各種持續整合服務的資訊,參考如下: