測試景觀和伴侶

可測試性

可測試性資訊:

景觀測試套件

您可以透過下列方式指定套件:

  • 一切:

    --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-releasefuchsia-x64-asan 機器人。

在現有的 CQ 測試中新增測試套件

大部分的 Scenic 和 Escher 測試都是使用 Googletest 編寫。如果您需要新增測試套件或測試案例,就必須建立測試來源檔案,並將這些檔案新增為對應 BUILD.gn 檔案中測試可執行檔的來源。

將測試套件新增至 CQ

如要將測試套件新增至 CQ,您需要:

  • 建立測試元件;
  • 參考測試套件;
  • 指定測試環境。

建立測試元件

如要在 CQ 中新增測試套件,您需要建立包括來源檔案、 中繼資料和 BUILD.gn 檔案。請參閱「測試元件」一文。您可以在單一測試套件中加入多個測試執行檔,而這些執行檔 會在主機上執行 fx test <test_package> 時執行。

測試套件範例:

參照測試套件

為確保測試在 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