采用模块控制器

每个套件模块(由 AndroidTest.xml 定义)均可包含一个特殊的 module_controller 对象,该对象可以改变模块的某种行为:

是否根据某些条件运行模块

通过实现 BaseModuleController 并将其添加到 AndroidTest.xml,如下所示:

<object type="module_controller" class="com.android.tradefed.testtype.suite.module.<NAME>" />

模块控制器将用于根据 public abstract RunStrategy shouldRun(IInvocationContext context); 实现来确定是否应运行相应模块。

是否收集某些故障日志

运行完整套件时,可以在套件级别请求收集某些故障日志(屏幕截图、bug 报告和 logcat)。但对于某些模块来说,请求的特定日志可能没有任何价值,收集该日志只是在浪费时间。在这种情况下,模块可以明确指定它们关注的日志:

<object type="module_controller"
        class="com.android.tradefed.testtype.suite.module.TestFailureModuleController">
    <option name="screenshot-on-failure" value="<true OR false>" />
    <option name="bugreportz-on-failure" value="<true OR false>" />
    <option name="logcat-on-failure" value="<true OR false>" />
</object>

注意:控制器的实现应尽可能通用,以便最大限度地提高可重用性。如果根据模块条件跳过某个模块,应由模块所有者审核,得到他们的批准,确认跳过模块是正确的行为。