运行 Fuchsia 测试

本指南介绍了如何使用 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>FATALERRORWARNINFODEBUGTRACE 之一。这适用于 由测试本身及受测所有组件发出的请求。

  • <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#ERRORfoo 的子级下名为 bar 的所有组件,其中包含任何 名称会发出严重级别为 ERROR 或更高的日志。例如,foo/a/barfoo/baz/bar 会受到影响,但测试组件 foo/bara/b 不受影响。

从 run-host-tests 转换

使用 fx run-host-testsfx 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。工件会从测试中拉取出来 保存至指定目录。