测试景观和埃舍尔

可测试性

可测试性的相关信息:

风景优美的测试软件包

您可以通过以下方式指定软件包:

  • 全部:

    --with //bundles/tests
    
  • 如果您想减少单独构建的软件包,请执行以下操作:

    --with //src/ui:tests
    --with //src/ui/lib/escher:escher_tests
    

景观和 CQ

对于 Fuchsia 中的每项更改, trybots 会在提交之前自动运行测试。请参阅 https://ci.chromium.org/p/fuchsia/builders 中的 fuchsia-x64-releasefuchsia-x64-asan 聊天机器人。

向现有 CQ 测试添加新的测试套件

大多数 Views 和 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)上运行测试,并同时使用调试 build 和发布 build。如需在其他环境中运行,请参阅测试环境

以传递方式引用测试软件包。例如,//bundles/packages/tests:all//bundles/packages/tests:scenic 会引用上述软件包。

单元测试和集成测试

如需在开发期间在本地运行测试,请执行以下操作:

在设备/模拟器上运行

其中一些测试要求测试 Views 连接到实际的显示控制器。

运行 fx shell killall scenic.cm 以终止风景优美的一个活跃实例。

  • 运行所有 Views 测试:

    在主机工作站上,确保 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 文档中的说明操作。

手动界面测试

进行重大的“scape”更改后,您可能需要运行一些示例应用来进行手动界面测试,看看是否存在任何回归问题。

界面示例

以下是一些示例:

  • flatland-view-provider
    • 提供 ViewProvider 并使用 Flatland 命令创建界面的基本示例。
    • 来源//src/ui/examples/flatland-view-provider
    • build 依赖项//src/ui/examples/flatland-view-provider
    • 软件包 URIfuchsia-pkg://fuchsia.com/flatland-examples#meta/flatland-view-provider.cm

如需运行这些应用,您需要在 fx set 配置中添加以下依赖项:

fx set workstation_eng.x64 --with "//src/ui/examples"

运行界面示例

在 shell 中运行

您可以在所在的任何 shell 中启动故事(模块):

  • 在 Ermine shell 中,您可以通过在 [ASK] 栏中输入软件包名称(例如 flatland-view-provider)来运行模块以运行模块。

  • 或者,使用 ffx session add <component_name> 命令在 shell 中启动组件。

    在主机工作站上,运行以下命令:

    fx session add "fuchsia-pkg://fuchsia.com/flatland_examples#meta/flatland-view-provider.cm"
    

    呈现 flatland-view-provider 组件中提供的 View