Google 致力于为黑人社区推动种族平等。查看具体举措

在 TF 中编写主机端无设备测试

本页介绍如何编写不需要设备的主机端测试,例如在 Linux GCE 实例上运行的测试。(如需详细了解如何编写需要设备的主机驱动的测试,请参阅在 Trade Federation 中编写主机驱动的测试。)

主机端测试类型

您可以通过 Trade Federation (TF) 运行多种类型的主机端测试。

原生 (gtest) 测试

您可以创建原生测试 (gtest) 来测试平台。如果测试不需要设备,请在主机上运行该测试;这样,测试就会更快地运行。如需将此类测试配置为在测试主机上运行,请使用 TF 运行程序 HostGTest

以下是一个 TradeFed 测试配置示例:

<configuration description="Runs hello_world_test.">
    <option name="null-device" value="true" />
    <test class="com.android.tradefed.testtype.HostGTest" >
        <option name="module-name" value="hello_world_test" />
    </test>
</configuration>

测试配置在主机上运行 gtest 测试 (hello_world_test)。示例测试配置可以自动生成。除非您的测试需要特殊设置或清理,否则,您可以依赖自动测试配置生成功能来创建合适的 TF 测试配置。

如需配置主机端 gtest 并启用自动测试配置生成功能,请像 hello_world_test 那样在 Android.bp 中将 host_supported 设置为 true

如需详细了解如何编写原生测试,请参阅添加新的原生测试示例

JAR (Java) 主机测试

JAR 主机测试(例如 JUnit)是不需要在设备上运行的测试,可以提供 Java 项目的代码覆盖率。这种测试可以通过使用运行程序 HostTest 配置为在测试主机上运行。

TradeFed 测试配置示例:

<configuration description="Executes HelloWorldHostTest">
    <test class="com.android.tradefed.testtype.HostTest" >
        <option name="jar" value="HelloWorldHostTest.jar" />
    </test>
</configuration>

测试配置运行 HelloWorldHostTest 的主机端 JUnit 测试。请注意,上述测试配置可以自动生成。除非您的测试需要特殊设置或清理,否则,请使用自动测试配置生成功能来创建合适的 TradeFed 测试配置。

如需详细了解如何编写 JAR 主机测试,请参阅 JAR (Java) 主机测试页面。

隔离式 Java 主机测试

无设备 Java 测试可以在隔离环境中运行,相应的性能损失微乎其微。不过,在选择使用这种环境之前,需要考虑一些重要事项。

  • Tradefed 仅支持在隔离环境中执行 JUnit 测试。
  • 仅支持静态关联的依赖项。类路径中不包含使用 lib 声明的依赖项。
  • 隔离运行程序只会将 shim 运行程序和测试 jar 放在类路径中。
  • 使用此运行程序执行的每个测试运行都会产生一些固定开销。
  • 此选项还不能用于自动生成;因此,您需要为您的测试编写 AndroidTest.xml 文件。

Tradefed 测试配置示例(隔离式)

<configuration description="Executes HelloWorldIsolatedHostTest">
    <test class="com.android.tradefed.testtype.HostTest" >
        <option name="jar" value="HelloWorldHostTest.jar" />
    </test>
</configuration>

Python 测试

如果测试逻辑是使用 Python 编写的,请使用构建类型 python_test_host 创建一个可由 TF PythonBinaryHostTest 运行的 par 文件。

TradeFed 测试配置示例

<configuration description="Config to run atest unittests">
    <test class="com.android.tradefed.testtype.python.PythonBinaryHostTest" >
        <option name="par-file-name" value="atest_unittests" />
        <option name="test-timeout" value="2m" />
    </test>
</configuration>

测试套件设置

如需让 TF 能够访问指定 build 的主机端测试,请将测试模块 `test_suites` 设置设为 `general-tests`

test_suites: ["general-tests"],

使用此设置时,测试将封装到 test_suites 目标的 general-tests.zip 中。