本指南介绍了如何使用 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 设备上的各种服务进行交互,以进行测试
(请参阅 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 build 添加几个主要测试软件包,构建 Fuchsia,然后运行 build 中的所有测试例如:
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
不受影响。
从 run-host-tests 转换
使用 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
。
From:
fx run-host-tests <PATH_TO_HOST_TEST>
改后:
fx test <PATH_TO_HOST_TEST>
run-e2e-tests
将 fx run-e2e-tests
替换为 fx test
和额外的 --e2e
标志。
From:
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
会自动重复此命令
每次保存更改。对于测试驱动型开发,请尝试启动
在单独的 shell 中运行此命令,并观察您的代码如何重新构建和重新测试,
正在处理中。
fx smoke-test
最适合与封闭测试软件包搭配使用。测试包是
如果软件包包含其中任何测试的所有依赖项,则封闭。
也就是说,任何会影响此测试结果的代码更改都应
也需要重新构建该测试的软件包。
检查测试组件中的工件
组件测试可能会产生额外的工件,而这些工件无法向
stdout,例如自定义工件和覆盖率配置文件。修改者
默认情况下,fx test
会静默地舍弃这些工件。要查看这些信息
工件,使用以下代码为 fx test
指定输出目录:
--ffx-output-directory
。工件会从测试中拉取出来
保存至指定目录。