首先,请确保您了解 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 测试类,作为 java_test_host 构建目标的一部分,您需要使用以下命令来注入该选项
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