可測試性
可測試性資訊:
- Fuchsia 中的所有變更都必須符合「可測試性」評分量表。
- 另請參閱:測試環境
景觀測試套件
您可以透過下列方式指定套件:
一切:
--with //bundles/tests
個別套件:如果您想建構較少套件:
--with //src/ui:tests --with //src/ui/lib/escher:escher_tests
Scenic 和 CQ
每當 Fuchsia 發生變更,系統都會在提交前自動執行測試,請參閱 https://ci.chromium.org/p/fuchsia/builders 中的 fuchsia-x64-release
和 fuchsia-x64-asan
機器人。
在現有的 CQ 測試中新增測試套件
大部分的 Scenic 和 Escher 測試都是使用 Googletest 編寫。如果您需要新增測試套件或測試案例,就必須建立測試來源檔案,並將這些檔案新增為對應 BUILD.gn
檔案中測試可執行檔的來源。
將測試套件新增至 CQ
如要將測試套件新增至 CQ,您需要:
- 建立測試元件;
- 參考測試套件;
- 指定測試環境。
建立測試元件
如要在 CQ 中新增測試套件,您需要建立包括來源檔案、
中繼資料和 BUILD.gn 檔案。請參閱「測試元件」一文。您可以在單一測試套件中加入多個測試執行檔,而這些執行檔
會在主機上執行 fx test <test_package>
時執行。
測試套件範例:
- allocation_unittests: //src/ui/scenic:allocation_unittests
- escher_tests: //src/ui/lib/escher:escher_tests
參照測試套件
為確保測試在 CQ 上執行,需要連結至 fx set
指令可用套件的完整依附元件鏈結 (可使用 --with
標記展開),通常會經過 //bundles/packages/tests:all
的所有目標。
您必須確保從 //bundles/packages/tests:all
到測試套件的依附元件鏈結。若需更多資訊,請參閲
測試常見問題說明文件。
指定測試環境
為確保測試在 CQ 上執行,您還需要為測試 BUILD.gn
檔案內套件中的每個可執行的測試指定測試環境。
一般來說,環境會設為 environments = basic_envs
。此參數指定測試應在 QEMU (arm64)、FEMU 和 NUC (適用於 x64) 上執行,並使用
包括偵錯和發布子版本如要在其他環境中執行,請參閱
測試環境。
間接參照測試套件。舉例來說,上述的套件
由 //bundles/packages/tests:all
透過 //bundles/packages/tests:scenic
參照。
單元測試和整合測試
如要在開發期間在本機上執行測試,請按照下列步驟操作:
在裝置/模擬器上執行
其中部分測試需要測試 Scenic 連線至實際的顯示器控制器。
執行 fx shell killall scenic.cm
來終止運作中的 Sky 例項。
執行所有景觀測試:
在主機工作站上確認
fx serve
是否正在執行,然後執行下列操作:fx test \ escher_tests \ allocation_unittests \ display_unittests \ flatland_unittests \ flatland_buffers_unittests \ flatland_display_compositor_pixeltests \ flatland_display_compositor_pixeltests_with_fake_display \ flatland_engine_unittests \ flatland_renderer_unittests \ input_unittests \ scenic_unittests \ scheduling_unittests
或從 Fuchsia 目標裝置:
runtests --names escher_unittests,input_unittests,a11y_manager_apptests
執行特定測試二進位檔:
請從主機工作站確認
fx serve
是否正在執行,然後使用下列指令執行escher_unittests
測試元件:fx test escher_unittests
在單一元件中執行單一測試:
在主機工作站上確認
fx serve
是否正在執行,然後執行下列操作:fx test escher_unittests -- --gtest_filter=NoOpMacTest.DummyTestCase
進一步瞭解篩選器引數的 glob 模式。
執行特定元件
在主機工作站上:
fx test fuchsia-pkg://fuchsia.com/escher_unittests#meta/escher_unittests.cm
主機測試
fx test --host
會執行所有主機測試,但您可能只想執行 Escher 測試。- Escher:如要在 Linux 上本機執行
escher_unittests
,請按照 Escher 說明文件中的指示操作。
手動 UI 測試
完成重大異動後,建議您執行手動 UI 測試 看看是否有任何迴歸問題
UI 範例
以下提供一些範例:
- flatland-rainbow
- 使用 Flatland 指令建立 UI 並連結至 將場景圖分成兩種方法:
- 正在連線到「
fuchsia.element.GraphicalPresenter
」 - (舊版) 服務地區:
fuchsia.ui.app.ViewProvider
- 來源:
//src/ui/examples/flatland-rainbow
- 版本依附元件:
//src/ui/examples/flatland-rainbow
- 套件 URI:
fuchsia-pkg://fuchsia.com/flatland-examples#meta/flatland-rainbow.cm
fuchsia-pkg://fuchsia.com/flatland-examples#meta/flatland-rainbow-vulkan.cm
如要執行這些應用程式,您必須在 fx set
中加入下列依附元件
設定:
fx set workbench_eng.x64 --with "//src/ui/examples"
執行 UI 範例
在工作階段中執行
你可在任何一位工作階段,透過
ffx session add <component_name>
。在主機工作站上執行:
fx session add "fuchsia-pkg://fuchsia.com/flatland_examples#meta/flatland-rainbow.cm"
來顯示在 flatland-rainbow
元件中建立的 View
。