Dart 測試
軟體測試是應用開發的重要組成部分,有助於在釋出應用之前驗證其是否正常工作。本 Dart 測試指南概述了幾種型別的測試,並指引您瞭解如何測試 Flutter、Web 以及伺服器端應用和指令碼。
您可以使用 dart test 命令(對於 Flutter 應用,則使用 flutter test)在命令列上執行測試。
測試的種類
#Dart 測試文件重點介紹了您可能熟悉的多種測試中的三種:單元測試、元件測試和端到端測試(一種整合測試)。測試術語各不相同,但這些是您在使用 Dart 技術時可能會遇到的術語和概念
單元測試專注於驗證最小的可測試軟體單元,例如函式、方法或類。您的測試套件應包含比其他型別更多的單元測試。
元件測試(在 Flutter 中稱為 Widget 測試)驗證元件(通常由多個類組成)的行為是否符合預期。元件測試通常需要使用模擬物件 (mock object),這些模擬物件可以模仿使用者操作、事件、執行佈局以及例項化子元件。
整合測試和端到端測試驗證整個應用或應用的大部分行為。整合測試通常在模擬或真實裝置上執行,或者在瀏覽器中執行(針對 Web 應用),由兩部分組成:應用本身,以及驅動應用執行的測試應用。整合測試通常會測量效能,因此測試應用通常在與被測應用不同的裝置或作業系統上執行。
常用的庫
#儘管您的測試部分取決於程式碼的目標平臺——例如 Flutter、Web 或伺服器端——但以下包在所有 Dart 平臺中都很有用
package:test
提供了一種在 Dart 中編寫測試的標準方式。您可以使用 test 包來:- 編寫單個測試或測試組。
- 使用
@TestOn註解限制測試在特定環境中執行。 - 像編寫同步測試一樣編寫非同步測試。
- 使用
@Tag註解為測試打標籤。例如,定義一個標籤來為某些測試建立自定義配置,或標記某些測試需要更長時間完成。 - 建立
dart_test.yaml檔案來配置跨多個檔案或整個包的標籤測試。
package:mockito
提供一種建立模擬物件 (mock object) 的方式,這些物件可以輕鬆配置用於固定場景,並驗證被測系統與模擬物件互動的方式是否符合預期。有關同時使用 package:test 和 package:mockito 的示例,請參閱 mockito 包中的國際空間站 API 庫及其單元測試。
Flutter 測試
#使用以下資源瞭解更多關於測試 Flutter 應用的資訊
- 測試 Flutter 應用
如何在 Flutter 應用上執行單元測試、Widget 測試或整合測試。 - flutter_test
一個基於 package:test 構建的 Flutter 測試庫。 - flutter_driver
一個用於在真實裝置和模擬器上(在獨立程序中)測試 Flutter 應用的測試庫。 - flutter_gallery
Flutter gallery 示例的原始碼和測試。 - flutter/dev/manual_tests
Flutter SDK 中的許多測試示例。
其他工具和資源
#您可能還會發現以下資源對於開發和除錯 Dart 應用很有用。
IDE
#當談到除錯時,您的第一道防線是您的 IDE。許多常用 IDE 都有 Dart 外掛。
Dart DevTools
#Dart DevTools 是一套用於 Dart 和 Flutter 的效能工具。詳情請參閱Dart DevTools 文件。
持續整合
#考慮使用持續整合 (CI) 在每次提交後構建您的專案並執行其測試。GitHub 的兩個 CI 服務是 GitHub Actions 和 AppVeyor。
瞭解更多關於 GitHub Actions 的資訊
- Dart 團隊提供的許多包都使用 GitHub Actions。例如,請參閱 markdown 包倉庫中的
markdown.yaml。要了解該倉庫如何從 Travis CI 遷移到 GitHub Actions,請檢視 PR #353。