執行 Fuchsia 測試

本指南說明如何使用 fx test 執行 Fuchsia 測試 指令

在 Fuchsia 中,測試可以是在 Fuchsia 裝置上執行的元件 (請參閱 以元件形式進行測試) 或獨立執行的可執行檔 相同的虛擬機器

如要執行 Fuchsia 測試,請使用 fx test 指令搭配測試名稱:

fx test <TEST_NAME>

如果 TEST_NAME 是測試元件,fx test 會連線至您的 Fuchsia 裝置 載入並執行測試元件也就是說,這個指令會尋找元件的 對應的元件 URI 並呼叫 ffx test run。不過,如果 TEST_NAME 是主機測試,請直接 fx test 會叫用測試二進位檔,以便在主體機器上執行。

與主機測試類似,端對端測試也會在主體機器上執行。測試 然後可能會在 Fuchsia 裝置上與各種服務互動,以便進行測試 (請參閱「Scripting Layer for Fuchsia」)。如要在 請在端對端測試中為 fx test 提供額外標記 (--e2e):

fx test --e2e <END_TO_END_TEST_NAME>

自訂叫用

fx test 可以一次執行多項測試或測試套件。這個指令也可以 篩選測試,區分為裝置、主機或端對端測試。

如要自訂 fx test,您可以新增旗標並提供 數量:

fx test <FLAGS> <TEST_NAME_01> <TEST_NAME_02> ...

以下各節說明自訂 fx test 的常見方式。

執行多項測試

如要執行多組 Fuchsia 測試,請設定 Fuchsia 版本 加入多個主要測試套裝組合,建構 Fuchsia,然後執行 容器中的所有測試項目例如:

fx set core.x64 --with //bundles/tools,//bundles/tests
fx build
fx test

您也可以在單一叫用中提供多個目標:

fx test <PACKAGE_01> <PACKAGE_02> <COMPONENT_01> <COMPONENT_02>

如需詳情,請參閱透過多種方式指定測試。 您可透過多種方式指定測試

將引數傳遞至測試

使用 -- 旗標傳遞其他引數以測試元件。

以下範例會將 arg 標記傳遞至測試:

fx test <TEST_NAME> -- --arg=5

舉例來說,上述指令會在內部呼叫下列指令:

fx ffx test run <TEST_COMPONENT_URI> -- --arg=5

透過多種方式指定測試

fx test 支援多種參照特定測試的方式:

主機測試路徑

若是主機測試,請提供從 Fuchsia 版本輸出目錄。如果路徑指向子目錄,而不是 檔案,fx test 會執行該目錄中所有相符的測試二進位檔。

舉例來說,您可以提供相對路徑來指定測試二進位檔:

fx test host_x64/pm_cmd_pm_genkey_test

或者,您也可以提供測試目錄的相對路徑:

fx test host_x64/gen/sdk

套件網址

請提供完整的 Fuchsia 元件網址來指定測試 元件。例如:

fx test fuchsia-pkg://fuchsia.com/my_example_test_pkg#meta/my_example_test.cm

請提供部分套件網址,以便比對並執行 以及所提供的 Fuchsia 套件網址。例如:

fx test fuchsia-pkg://fuchsia.com/my_example_test_pkg

套件名稱

提供用來執行所有測試元件的套件名稱 該套件。例如:

fx test my_example_test_pkg

如要明確將輸入內容指定為套件名稱,請使用 -p 標記。例如:

fx test -p my_example_test_pkg

元件名稱

提供元件名稱 (或資源路徑) 來測試單一元件 套件內元件例如:

fx test my_example_test

如要明確將輸入內容指定為元件名稱,請使用 -c 標記。例如:

fx test -c my_example_test

如要在特定套件中執行元件,請同時使用 -p <PACKAGE_NAME>-c <COMPONENT_NAME>。例如:

fx test -p my_example_test_pkg -c my_example_test

設定最低記錄嚴重性

fx test (以及基礎 ffx test) 接受「--min-severity-logs」標記,讓您能夠 設定測試和測試元件所發出的記錄最低嚴重性。

如果測試或底下的元件使用支援設定動態功能的記錄程式庫 記錄嚴重性 (Fuchsia Rust 和 C++ 記錄程式庫支援)。適用於不支援 支援這項功能,test_manager 會手動篩選記錄,前提是測試輸出記錄為 嚴重性低於您設定的下限

這個標記接受兩種定義最小嚴重性的方法:

  • <severity>FATALERRORWARNINFODEBUGTRACE 其中之一。這適用於記錄檔 產生的值。

  • <component selector>#<severity>,其中<component selector> 會指定測試底下的一組元件 (例如 foo/bar),而嚴重性是 的嚴重程度

以下列舉幾個例子:

  • --min-severity-logs DEBUG:指示測試和測試中的所有元件發出指令 嚴重性為 DEBUG 以上的記錄。這等同於使用元件選取器: --min-severity-logs **#DEBUG

  • --min-severity-logs a#DEBUG --min-severity-logs b/c#ERROR:測試 a 底下的元件 會發出嚴重性為 DEBUG 以上的記錄,而測試 b/c 下的元件會發出 嚴重性為 ERROR 以上。測試本身產生的記錄會使用預設的最低嚴重性。

  • --min-severity-logs '<root>#DEBUG':系統會指示測試產生嚴重性為 DEBUG 的記錄 或是更高等級的,但其下的元件會使用其預設的最小嚴重性來發出記錄。

  • --min-severity-logs foo/*/bar#ERRORfoo 子項之下所有名為 bar 的元件,其中包含 並輸出嚴重性為 ERROR 以上的記錄檔。例如 foo/a/barfoo/baz/bar 會受到影響,但測試元件、foo/bara/b 則不受影響。

從執行主機測試轉換

fx run-host-testsfx run-e2e-tests 指令正在 並改用 fx test請參閱下列操作說明 並使用 fx test 取代下列指令:

fx test <NESTED_COMPONENT_NAME>

run-host-tests

fx run-host-tests 替換成 fx test

從:

fx run-host-tests <PATH_TO_HOST_TEST>

到:

fx test <PATH_TO_HOST_TEST>

執行-e2e-測試

fx run-e2e-tests 替換成 fx test 和額外的 --e2e 標記。

從:

fx run-e2e-tests <END_TO_END_TEST>

到:

fx test --e2e <END_TO_END_TEST>

以測試為導向開發

fx smoke-test 指令會自動偵測所有已知的測試 變更會影響建構系統的建構系統。在此情況下,建議您嘗試下列疑難排解做法:

fx -i smoke-test --verbose

在上述指令中,--verbose 也會顯示哪些測試 fx smoke-test 可能會受到影響-i 會自動重複這個指令 每次儲存變更時如要進行測試導向的開發作業,可嘗試啟動 在單獨的殼層中執行這項指令,並觀察您的程式碼將自動建構和重新測試

fx smoke-test 搭配密封測試套件的效果最佳。測試套件為 以確保套件包含所有測試的所有依附元件。 換句話說,任何會影響這項測試結果的程式碼變更,都應 也需要重建測試套件。

檢查測試元件的成果

元件測試可能會產生無法向其他使用者顯示的額外構件 stdout,例如自訂構件和涵蓋範圍設定檔。變更者: 預設值,fx test 會在不發出通知的情況下捨棄這些構件。要查看這些 構件,請使用以下指令將輸出目錄指定為 fx test --ffx-output-directory。系統會從測試中提取成果 就會儲存到指定的目錄。