Utilizzare i controller dei moduli

Ogni modulo della suite (definito da AndroidTest.xml) può contenere un oggetto speciale module_controller che può alterare alcuni comportamenti del modulo:

Se eseguire o meno il modulo in base ad alcune condizioni

Implementando BaseModuleController e aggiungendolo a AndroidTest.xml in questo modo:

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

Il controller del modulo verrà utilizzato per determinare se il modulo deve essere eseguito o meno, in base all'implementazione di public abstract RunStrategy shouldRun(IInvocationContext context);.

Se raccogliere o meno alcuni log in caso di errori

Quando esegui una suite completa, puoi richiedere a livello di suite la raccolta di alcuni log in caso di errori (screenshot, segnalazione di bug, logcat). Tuttavia, per alcuni moduli, un log specifico richiesto potrebbe non avere alcun valore e semplicemente sprecare tempo per essere raccolto. In questa situazione, un modulo può specificare esplicitamente i log che gli interessano:

<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: l'implementazione dei controller deve essere generica, se possibile, per massimizzare la riutilizzabilità. Inoltre, l'omissione di un modulo in base alla sua condizione deve essere esaminata dal proprietario del modulo per ottenere l'approvazione che l'omissione di un modulo sia il comportamento corretto per lui.