跳到主內容

測試 Flutter 應用

瞭解有關不同測試型別的更多資訊以及如何編寫它們。

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

自動化測試分為幾類

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

一般來說,一個測試充分的應用會包含大量的單元測試和元件測試(由程式碼覆蓋率跟蹤),外加足夠的整合測試來覆蓋所有重要的用例。此建議基於這樣一個事實:不同型別的測試之間存在權衡,如下所示。

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

單元測試

#

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

指南

#

元件測試

#

元件測試(在其他 UI 框架中稱為“部件測試”)用於測試單個元件(Widget)。元件測試的目標是驗證元件的 UI 外觀和互動是否符合預期。測試元件涉及多個類,並且需要一個提供相應元件生命週期上下文的測試環境。

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

指南

#

整合測試

#

整合測試用於測試完整的應用或應用的很大一部分。整合測試的目標是驗證所有被測元件和服務是否按預期協同工作。此外,您可以使用整合測試來驗證應用的效能。

通常,整合測試在真實裝置或 OS 模擬器(例如 iOS 模擬器或 Android 模擬器)上執行。被測應用通常與測試驅動程式程式碼隔離,以避免結果產生偏差。

Flutter SDK 包含 integration_test 軟體包。但是,此軟體包無法與原生平臺 UI 互動,例如許可權對話方塊、通知或原生平臺檢視。對於需要原生互動的應用,您可以使用 patrol 軟體包,這是一個開源框架,透過原生平臺支援擴充套件了 Flutter 的測試能力。

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

指南

#

持續整合服務

#

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

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