跳到主要內容

Dart 測試

軟體測試是應用開發的重要組成部分,有助於在釋出應用之前驗證其是否正常工作。本 Dart 測試指南概述了幾種型別的測試,並指引您瞭解如何測試 FlutterWeb 以及伺服器端應用和指令碼

您可以使用 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 應用的資訊

其他工具和資源

#

您可能還會發現以下資源對於開發和除錯 Dart 應用很有用。

IDE

#

當談到除錯時,您的第一道防線是您的 IDE。許多常用 IDE 都有 Dart 外掛。

Dart DevTools

#

Dart DevTools 是一套用於 Dart 和 Flutter 的效能工具。詳情請參閱Dart DevTools 文件。

持續整合

#

考慮使用持續整合 (CI) 在每次提交後構建您的專案並執行其測試。GitHub 的兩個 CI 服務是 GitHub ActionsAppVeyor

瞭解更多關於 GitHub Actions 的資訊

  • Dart 團隊提供的許多包都使用 GitHub Actions。例如,請參閱 markdown 包倉庫中的 markdown.yaml。要了解該倉庫如何從 Travis CI 遷移到 GitHub Actions,請檢視 PR #353