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.