Empregar controladores de módulo

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

Executar o módulo ou não com base em algumas condições

Implementando BaseModuleController e adicionando-o ao AndroidTest.xml assim:

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

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

Coletar ou não alguns logs em caso de falhas

Ao executar uma suíte completa, é possível solicitar no nível da suíte a coleta de alguns logs de falhas (captura de tela, relatório de bug, logcat). Mas para alguns módulos, um determinado log solicitado pode não ter nenhum valor e simplesmente perderá tempo para ser coletado. Nessa situação, um módulo pode especificar explicitamente em quais logs está interessado:

<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: A implementação de controladores deve ser genérica, se possível, para maximizar a reutilização. E pular um módulo com base em sua condição deve ser revisado pelo proprietário do módulo para obter a aprovação de que pular um módulo é o comportamento adequado para ele.