本节说明在对项目进行更改后如何运行和参与 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 中,要运行单个单元测试,只需右键单击该测试并选择Run As > JUnit 。要运行所有单元测试,请运行com.android.tradefed.UnitTests套件。
您还可以在构建后从 Tradefed 源代码树中的命令行启动单元测试,如下所示: tools/tradefederation/core/javatests/run_tradefed_tests.sh
单元测试可以独立执行,但功能测试应该使用 Trade Federation 本身执行;他们需要安卓设备。所有功能测试都应遵循命名约定*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 运行功能测试:
- 确保设备已连接到主机,并且
adb
和必要时fastboot
位于 Eclipse 的 PATH 中。最简单的方法是使用正确的 PATH 从 shell 设置启动 Eclipse。 - 创建 Java 应用程序。通过Run > Run configurations 运行配置。
- 将项目设置为
tradefed-tests
并将主类设置为com.android.tradefed.command.CommandRunner
。 - 运行
m tradefed-all
。 - 在Arguments选项卡中提供以下命令行参数:
host --class <full path of test class to run>
- 单击运行。
在 Eclipse 之外运行功能测试。
- 建立贸易联盟。
- 将 Android 设备连接到主机。
- 运行
tools/tradefederation/core/javatests/run_tradefed_func_tests.sh
- 或者,通过附加
--serial <serial no>
来选择设备,因为它出现在adb devices
的输出中。
针对本地更改运行 TF 预提交测试
如果您想以与 TF 预提交类似的方式运行,请使用以下命令:
tools/tradefederation/core/javatests/run_tradefed_aosp_presubmit.sh
这将针对您本地构建的 TF 触发所有 TF 预提交测试,以帮助您验证您的更改不会破坏任何测试。
TF 预提交测试是上述单元测试的超集,但运行速度较慢。因此,建议在开发期间运行单元测试以加快验证速度,并在上传 CL 之前运行预提交。