Cada módulo de pacote (definido por AndroidTest.xml
) pode conter um objeto
module_controller
especial que pode mudar 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 do módulo será usado para determinar se o módulo precisa ser executado
ou não, com base na
implementação
public abstract RunStrategy shouldRun(IInvocationContext context);
.
Se é necessário coletar alguns registros ou não em falhas
Ao executar um pacote completo, é possível solicitar no nível do pacote a coleta de alguns registros de falhas (captura de tela, relatório do bug, logcat). No entanto, para alguns módulos, um registro específico solicitado pode não ter nenhum valor e simplesmente desperdiçar tempo para ser coletado. Nessa situação, um módulo pode especificar explicitamente em quais registros ele 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>
OBSERVAÇÃO: a implementação de controladores precisa ser genérica, se possível, para maximizar a reutilização. E o proprietário do módulo precisa analisar se pular um módulo com base na condição dele para receber a aprovação de que pular um módulo é o comportamento adequado.