在裝置上執行測試

ffx test run 指令可在 Fuchsia 裝置上執行測試,並收集 測試結果和診斷資訊

概念

ffx test run 指令會執行與 Fuchsia 測試執行元件:可定義測試案例 並在 Fuchsia 元件中實作

在 Fuchsia 裝置上執行測試元件時, 步驟如下:

  1. 將程式碼、元件和套件定義編譯成 Fuchsia 套件。
  2. 將套件提供給目標裝置。
  3. 在目標裝置上執行測試元件。

ffx test 指令只會處理步驟 3。步驟 1 和 2 本身需要 以及建構系統的相關知識,ffx test 的設計宗旨為 建構系統的方法

測試流程

圖 1. 顯示 ffx test 與其他工具的配合方式的流程圖 常用於編譯和執行測試

ffx test 指令旨在提供使用 而這些工具通常會執行特定於建構系統的測試 或是開發環境本頁記錄的工作流程主要適用於 開發人員必須負責開發這類高階工具身為測試作者 想瞭解如何在特定專案中執行測試 請參閱專案存放區的說明文件如要在 Fuchsia 來源結帳 (fuchsia.git),請參閱 fx test 說明文件

不過在極少數的情況下,您可能需要直接叫用 ffx test 才能使用 這裡沒有高階工具提供的選項此外,專案可能需要 以支援 ffx test 不支援的其他類型測試,例如主機測試。 高階測試指令碼可以直接處理這些問題,也可以委派 承擔其他工具應具備的責任舉例來說,fx test 適用於 Fuchsia SDKfuchsia.gitbazel test 開發的程式。

執行測試元件

如要在目標裝置上執行測試元件,請執行下列指令:

ffx test run TEST_COMPONENT_URL

TEST_COMPONENT_URL 替換為目標測試元件網址。

下列範例指令會在下列位置的 example.cm 元件中執行測試: 目標裝置:

$ ffx test run fuchsia-pkg://fuchsia.com/example#example.cm

使用篩選器執行特定測試案例

如要在測試元件中選擇性執行測試案例,請執行下列指令 指令:

ffx test run TEST_COMPONENT_URL --test-filter FILTERS

更改下列內容:

  • TEST_COMPONENT_URL:目標測試元件網址。
  • FILTERS - 比對測試案例的模式。

--test-filter 選項中提供的篩選器將會比對下列項目: glob 模式只有符合至少一個模式的測試案例,才會執行。 舉例來說,假設某個套件包含測試案例 Foo.Test1Foo.Test2Bar.Test1Bar.Test2,下列指令只會執行 Foo.Test1Foo.Test2:

$ ffx test run fuchsia-pkg://fuchsia.com/example#example.cm --test-filter Foo.*

如要指定排除篩選器,請在前方加上 -。陰性時 篩選器指定時,系統會排除符合排除篩選器的測試案例。 舉例來說,如果使用與上述套件相同的套件,以下指令只會執行 Bar.Test1Bar.Test2

$ ffx test run fuchsia-pkg://fuchsia.com/example#example.cm --test-filter -Foo.*

--test-filter 選項可以多次指定。行為 方法如下:

  • 如果沒有指定篩選器,就會執行所有測試案例。
  • 如果只指定正數篩選器,則至少會比對一個測試案例
  • 如果只指定排除篩選器,則測試案例均不與 篩選器會在執行時
  • 如果您同時指定正數和負數篩選器,則兩個相符的測試案例 系統會執行至少一個正向篩選器,但不符合任何排除篩選器。

如果使用與上述套件相同的套件,下方的範例指令只會執行 Foo.Test2:

$ ffx test run fuchsia-pkg://fuchsia.com/example#example.cm --test-filter Foo.* --test-filter -*.Test1

使用引數執行測試

如要在測試元件中將引數傳遞至測試,請執行下列指令: 指令:

ffx test run TEST_COMPONENT_URL -- ARGS

更改下列內容:

  • TEST_COMPONENT_URL:目標測試元件網址。
  • ARGS:要傳遞至測試的引數。

以下範例指令會將引數 hello1234 直接傳遞至 測試:

$ ffx test run fuchsia-pkg://fuchsia.com/example#example.cm -- hello 1234

執行測試並儲存結構化結果

ffx test run 支援在機器可讀取的機器中列印並儲存測試結果 格式,適合其他工具使用 (請參閱 測試輸出格式)。

如要在執行測試後儲存結構化測試結果,請執行下列指令 指令:

ffx test run TEST_COMPONENT_URL --output-directory DIR

更改下列內容:

  • TEST_COMPONENT_URL:目標測試元件網址。
  • DIR:用於儲存結構化測試結果的目錄。

下列範例指令會將輸出內容儲存在 /tmp/ffx-out 目錄中:

$ ffx test run fuchsia-pkg://fuchsia.com/example#example.cm --output-directory /tmp/ffx-out

附錄

傳回代碼

如果測試成功執行,ffx test run 會傳回 0,案例則傳回非零 失敗。ffx test run 支援多種特殊錯誤代碼:

名稱 結束代碼 說明
設定失敗 28 無法在目標裝置上連線至必要通訊協定
逾時 21 因逾時而執行測試失敗

訊號中斷

傳遞 SIGINT時,一般做法是按下 Ctrl+C 輸入 終端機,ffx test run 會嘗試安全停止執行中的作業 測試並儲存結果

實驗功能

ffx test run 支援多項實驗功能。這些功能 否則模型可能會遭到破壞性變更或移除使用實驗功能需要 將對應的 ffx config 欄位設為 true,即可選擇採用。詳情請見 如需可用的實驗功能和相關資訊,請ffx test run --help。 如何選擇採用。