本页介绍如何编写不需要设备的主机端测试,例如在 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
中。