包含单元测试和功能测试

本节介绍如何在更改项目后运行 Trade Federation 测试并为其做贡献。这包括:

  • 在哪里添加新的单元测试类
  • 在 Eclipse 内和 Eclipse IDE 外运行单元测试
  • 在哪里添加功能测试
  • 运行功能测试
  • 在本地运行部分 TF 预提交验证

添加单元测试

在 Android 开源项目 (AOSP) 中,在以下位置添加单元测试类:tools/tradefederation/core/tests/src/com/android/tradefed/UnitTests.java

重要提示:将新的单元测试类添加到这些位置将使其在预提交中自动运行,而无需进行其他设置。

运行单元测试

Trade Federation 的所有 AOSP 单元测试和功能测试都位于 tools/tradefederation/core/tests 项目中。

在 Eclipse 内部,要运行单个单元测试,只需右键点击测试并选择 运行为 > JUnit。要运行所有单元测试,请运行 com.android.tradefed.UnitTests 套件。

您还可以从构建后的 Tradefed 源代码树中的命令行启动单元测试,如下所示:tools/tradefederation/core/javatests/run_tradefed_tests.sh

单元测试可以独立执行,但功能测试应使用 Trade Federation 本身执行;它们需要 Android 设备。所有功能测试都应遵循命名惯例 *FuncTest

检查单元测试结果

运行 run_tradefed_tests.sh 时,单元测试会测试测试工具的所有部分,包括一些错误情况。它会将详细输出打印到控制台,包括堆栈轨迹。

结果的最终摘要将指示是否发生故障。

控制台中的最终摘要示例

12:55:02 ========== Result Summary ==========
Results summary for test-tag 'TFUnitTests': 3355 Tests [3355 Passed]

所有测试都维护为可通过状态,因此如果您的本地更改中发生任何故障,请确保修复测试。

添加功能测试

  • 如果您的功能测试涉及设备(使用任何 ITestDevice API),则套件定义位于 com.android.tradefed.DeviceFuncTests 中。否则,套件定义位于 com.android.tradefed.FuncTests 中。

  • 如果您的测试方法适合放在现有套件子类之一中,请优先将其添加到那里。否则,请随意将新类添加到适用的套件。

  • 在任何一种情况下,通过将其添加到套件中,您的测试都会与其他功能测试一起在 CI 管道中自动运行。

运行功能测试

要从 Eclipse 运行功能测试

  1. 确保设备已连接到主机,并且 adb 和必要的 fastboot 已添加到 Eclipse 的 PATH 环境变量中。 最简单的方法是从已正确设置 PATH 的 shell 启动 Eclipse。
  2. 创建一个 Java 应用程序。 通过 运行 > 运行配置 运行配置。
  3. 将项目设置为 tradefed-tests,并将主类设置为 com.android.tradefed.command.CommandRunner
  4. 运行 m tradefed-all
  5. 参数选项卡中提供以下命令行参数:host --class <要运行的测试类的完整路径>
  6. 点击 运行

要在 Eclipse 之外运行功能测试。

  1. 构建 Trade Federation。
  2. 将 Android 设备连接到主机。
  3. 运行 tools/tradefederation/core/javatests/run_tradefed_func_tests.sh
  4. 可选地,通过附加 --serial <序列号> 来选择设备,序列号显示在 adb devices 的输出中。

针对本地更改运行 TF 预提交测试

如果您想以类似于 TF 预提交的方式运行,请使用此方法

tools/tradefederation/core/javatests/run_tradefed_aosp_presubmit.sh

这将针对您本地构建的 TF 触发所有 TF 预提交测试,以帮助您验证您的更改是否未破坏任何测试。

TF 预提交测试是上述单元测试的超集,但运行速度较慢。 因此,建议在开发期间运行单元测试以进行更快的验证,并在上传 CL 之前运行预提交测试。