可测试性
可测试性的相关信息:
风景优美的测试软件包
您可以通过以下方式指定软件包:
全部:
--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-release
和 fuchsia-x64-asan
聊天机器人。
向现有 CQ 测试添加新的测试套件
大多数 Views 和 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)上运行测试,并同时使用调试 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
- 软件包 URI:
fuchsia-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
。