将选项和过滤器传递给套件和模块

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