Usar controladores de módulo

Cada módulo de conjunto (definido por AndroidTest.xml) pode conter um objeto module_controller especial que pode alterar algum comportamento do módulo:

Se o módulo será executado ou não com base em algumas condições

Implementando BaseModuleController e adicionando-o ao AndroidTest.xml desta forma:

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

O controlador de módulo será usado para determinar se o módulo deve ser executado ou não, com base na implementação public abstract RunStrategy shouldRun(IInvocationContext context);.

Se quer coletar alguns registros em caso de falhas

Ao executar um conjunto completo, é possível solicitar no nível do conjunto a coleta de alguns registros em caso de falhas (captura de tela, relatório do bug, logcat). No entanto, para alguns módulos, um determinado registro solicitado pode não ter valor e apenas desperdiçar tempo para ser coletado. Nessa situação, um módulo pode especificar explicitamente os registros de interesse:

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

OBSERVAÇÃO: a implementação de controladores precisa ser genérica, se possível, para maximizar a reutilização. E pular um módulo com base na condição dele precisa ser revisado pelo proprietário para receber a aprovação de que essa é a ação adequada.