首先,确保您了解 Tradefed 中的选项处理。
套件设置介绍了套件结构中存在的两个层:
- 顶级套件
- 模块
在非套件 Tradefed 环境中,不需要考虑选项的传递,因为每个选项都会得到完全调用。在套件环境中,模块与套件保持隔离,所以并非所有选项都在它们的级别上可用。
将选项传递给顶级套件
顶级套件的行为方式类似于标准 Tradefed 配置:完整的配置(包括套件运行程序)将接收所有选项,就像非套件 Tradefed 配置一样。
将选项传递给模块
默认情况下,模块不会接收传递给命令的任何选项。需要通过 module-arg
选项来明确定位模块以接收选项。模块选项的这种隔离使调试变得更容易。
示例:
cts-tradefed run cts --module-arg <module-name>:<option-name>:<option-value>
cts-tradefed run cts --module-arg CtsGestureTestCases:collect-tests-only:true
该语法可确保定位的模块将接收给定的选项。
还有其他方法可以将选项传递给模块,如 test-arg
,它允许您根据运行程序类型或类,将选项传递给每个模块的测试运行程序。
示例:
cts-tradefed run cts --test-arg <test-class>:<option-name>:<option-value>
cts-tradefed run cts --test-arg com.android.tradefed.testtype.JarHosttest:collect-tests-only:true
该语法不是针对特定模块,而是针对给定类的所有测试运行程序。test-arg
只将 IRemoteTest 的实现视为选项的潜在接收者。
将选项传递给 java_test_host 中的 Java 测试类
如果您要将 @Option
作为 java_test_host 构建目标的一部分添加到 Java 测试类中,就需要使用以下代码来注入该选项:
cts-tradefed run cts --module-arg <module-name>:set-option:<option-name>:<option-value>
此上下文中的 set-option 是自动化测试框架中 HostTest 运行程序的选项,用于封装 Java 类以执行这些测试类。
如果选项的 jar 文件目标包含多个测试类,则默认情况下,所有类都需要指定 @option 或使用以下语法来以单个类为目标:
cts-tradefed run cts --module-arg <module-name>:set-option:<class-name>:<option-name>:<option-value>
将过滤条件传递给套件
为了过滤套件中的一些测试,我们使用 --include-filter
和 --exclude-filter
来分别强制包含或排除特定测试或模块。排除操作具有优先级。
它们采用如下格式:[abi] <module-name> [test name]
示例:
--include-filter CtsGestureTestCases
--include-filter armeabi-v7a CtsGestureTestCases
--include-filter armeabi-v7a CtsGestureTestCases android.gesture.cts.GestureTest#testGetStrokes