測試 Flutter 應用
通常一個應用的功能越多,手工測試就越困難。自動化測試在釋出之前執行,有助於保證我們應用的穩定性和功能的完整性,並且可以快速修復問題。
自動化測試可分為以下幾類:
一般來說,在自動化測試方面做的比較好的應用會有許多單元測試和 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) 服務允許我們在推送新程式碼(程式碼變更)時自動執行測試。當代碼變更後,會立即收到關於程式碼是否仍按預期工作、是否引入新問題的反饋。
有關各種持續整合服務的資訊,參考如下: