Emplear controladores de módulos

Cada módulo de la suite (definido por AndroidTest.xml ) puede contener un objeto module_controller especial que puede alterar algún comportamiento del módulo:

Si ejecutar el módulo o no según algunas condiciones

Implementando BaseModuleController y agregándolo a AndroidTest.xml de esta manera:

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

El controlador del módulo se utilizará para determinar si el módulo debe ejecutarse o no, según el public abstract RunStrategy shouldRun(IInvocationContext context); implementación.

Ya sea para recopilar algunos registros o no en caso de fallas

Cuando se ejecuta una suite completa, es posible solicitar a nivel de suite la recopilación de algunos registros sobre fallas (captura de pantalla, informe de error, logcat). Pero para algunos módulos, es posible que un registro solicitado en particular no tenga ningún valor y simplemente será una pérdida de tiempo recopilarlo. En esa situación, un módulo puede especificar explícitamente qué registros le interesan:

<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>

NOTA: La implementación de controladores debe ser genérica si es posible para maximizar la reutilización. Y el propietario del módulo debe revisar omitir un módulo en función de su condición para obtener la aprobación de que omitir un módulo es el comportamiento adecuado para ellos.