Controladores de módulo de empleo

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:

Ya sea para ejecutar el módulo o no en función de algunas condiciones

Al implementar BaseModuleController y agregarlo 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, en función del 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 en fallas (captura de pantalla, informe de errores, logcat). Pero para algunos módulos, un registro en particular solicitado puede no tener ningún valor y simplemente perderá tiempo para 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 los controladores debe ser genérica si es posible para maximizar la reutilización. Y omitir un módulo en función de su condición debe ser revisado por el propietario del módulo para obtener la aprobación de que omitir un módulo es el comportamiento adecuado para ellos.