本指南說明如何使用 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>
:FATAL
、ERROR
、WARN
、INFO
、DEBUG
或TRACE
其中之一。這適用於記錄檔 產生的值。<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#ERROR
:foo
子項之下所有名為bar
的元件,其中包含 並輸出嚴重性為ERROR
以上的記錄檔。例如foo/a/bar
和foo/baz/bar
會受到影響,但測試元件、foo/bar
和a/b
則不受影響。
從執行主機測試轉換
fx run-host-tests
和 fx 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
。系統會從測試中提取成果
就會儲存到指定的目錄。