Cómo emplear controladores de módulos

Cada módulo de conjunto de pruebas (definido por AndroidTest.xml) puede contener un objeto module_controller especial que puede alterar el comportamiento del módulo:

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

Para ello, implementa BaseModuleController y agrégalo a AndroidTest.xml de la siguiente manera:

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

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

Si se deben recopilar algunos registros en caso de fallas

Cuando se ejecuta un conjunto de pruebas completo, es posible solicitar a nivel del conjunto de pruebas la recopilación de algunos registros en caso de fallas (captura de pantalla, informe de errores, logcat). Sin embargo, para algunos módulos, es posible que un registro en particular solicitado no tenga ningún valor y simplemente pierda tiempo para recopilarse. En esa situación, un módulo puede especificar de forma explícita 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 los controladores debe ser genérica si es posible para maximizar la reutilización. Además, el propietario del módulo debe revisar la omisión de 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.