測試外掛程式
所有Flutter 測試的常用類型也適用於外掛程式套件,但由於外掛程式包含原生程式碼,它們通常也需要其他類型的測試來測試其所有功能。
外掛程式測試的類型
#要查看每種類型測試的範例,您可以從外掛程式範本建立新的外掛程式,並在指示的目錄中尋找。
Dart 單元測試和widget 測試。這些測試可讓您測試外掛程式的 Dart 部分,就像您測試非外掛程式套件的 Dart 程式碼一樣。但是,外掛程式的原生程式碼將不會被載入,因此對平台通道的任何呼叫都需要在測試中模擬。
請參閱
test
目錄中的範例。Dart 整合測試。由於整合測試在 Flutter 應用程式(範例應用程式)的環境中執行,因此它們可以測試 Dart 和原生程式碼,以及它們之間的互動。它們也可用於單元測試需要在瀏覽器中執行的 Web 實作程式碼。
這些通常是外掛程式最重要的測試。但是,Dart 整合測試無法與原生 UI 互動,例如原生對話方塊或平台視圖的內容。
請參閱
example/integration_test
目錄中的範例。原生單元測試。 就像 Dart 單元測試可以隔離測試外掛程式的 Dart 部分一樣,原生單元測試可以隔離測試原生部分。每個平台都有自己的原生單元測試系統,並且測試是用與其測試的程式碼相同的原生語言編寫的。
如果您需要模擬由外掛程式碼包裝的 API(這在 Dart 整合測試中是不可能的),則原生單元測試可能特別有價值。
您可以為每個平台設定和使用您熟悉的所有原生測試框架,但下列框架已在外掛程式範本中設定
Android:JUnit 測試可以在
android/src/test/
中找到。iOS 和 macOS:XCTest 測試分別可以在
example/ios/RunnerTests/
和example/macos/RunnerTests/
中找到。它們位於範例目錄中,而不是頂層套件目錄中,因為它們是透過範例應用程式的專案執行的。Linux 和 Windows:GoogleTest 測試分別可以在
linux/test/
和windows/test/
中找到。
其他類型的測試(目前未在範本中預先設定)是原生 UI 測試。在原生 UI 測試框架(例如 Espresso 或 XCUITest)下執行您的應用程式,可以啟用與原生和 Flutter UI 元素互動的測試,因此如果您的外掛程式在沒有原生 UI 互動的情況下無法測試,則此測試會很有用。
執行測試
#Dart 單元測試
#這些可以像任何其他 Flutter 單元測試一樣執行,可以從您偏好的 Flutter IDE 執行,也可以使用 flutter test
執行。
整合測試
#如需執行此類型測試的資訊,請查看整合測試文件。這些命令必須在 example
目錄中執行。
原生單元測試
#對於所有平台,您都需要至少先建置一次範例應用程式,然後才能執行單元測試,以確保已建立所有平台特定的建置檔案。
Android JUnit
如果您已在 Android Studio 中將範例開啟為 Android 專案,則可以使用Android Studio 測試 UI來執行單元測試。
若要從命令列執行測試,請在 example/android
目錄中使用下列命令
./gradlew testDebugUnitTest
iOS 和 macOS XCTest
如果您已在 Xcode 中開啟範例應用程式,則可以使用Xcode 測試 UI來執行單元測試。
若要從命令列執行測試,請在 example/ios
(適用於 iOS)或 example/macos
(適用於 macOS)目錄中使用下列命令
xcodebuild test -workspace Runner.xcworkspace -scheme Runner -configuration Debug
對於 iOS 測試,您可能需要先在 Xcode 中開啟 Runner.xcworkspace
以設定程式碼簽署。
Linux GoogleTest
若要從命令列執行測試,請在範例目錄中使用下列命令,並將「my_plugin」取代為您的外掛程式專案名稱
build/linux/plugins/x64/debug/my_plugin/my_plugin_test
如果您是以發行模式而不是偵錯模式建置範例應用程式,請將「debug」取代為「release」。
Windows GoogleTest
如果您已在 Visual Studio 中開啟範例應用程式,則可以使用Visual Studio 測試 UI來執行單元測試。
若要從命令列執行測試,請在範例目錄中使用下列命令,並將「my_plugin」取代為您的外掛程式專案名稱
build/windows/plugins/my_plugin/Debug/my_plugin_test.exe
如果您是以發行模式而不是偵錯模式建置範例應用程式,請將「Debug」取代為「Release」。
要新增哪種類型的測試
#適用於測試 Flutter 專案的一般建議也適用於外掛程式。外掛程式測試的一些額外注意事項
由於只有整合測試可以測試 Dart 和原生語言之間的通訊,請嘗試為每個平台通道呼叫至少進行一次整合測試。
如果某些流程無法使用整合測試進行測試(例如,如果它們需要與原生 UI 互動或模擬裝置狀態),請考慮使用單元測試來撰寫兩個半部的「端對端」測試
原生單元測試,設定必要的模擬,然後使用合成呼叫呼叫方法通道進入點,並驗證方法回應。
Dart 單元測試,模擬平台通道,然後呼叫外掛程式的公共 API 並驗證結果。
除非另有說明,否則本網站上的文件反映了 Flutter 的最新穩定版本。頁面上次更新時間為 2024-05-20。 檢視來源 或 回報問題。