首先,确保您了解 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