Każdy moduł pakietu (zdefiniowany przez AndroidTest.xml) może zawierać specjalny obiekt module_controller, który może zmieniać niektóre zachowania modułu:
Określanie, czy moduł ma być uruchamiany na podstawie określonych warunków
W tym celu zaimplementuj BaseModuleController
i dodaj go do AndroidTest.xml w ten sposób:
<object type="module_controller" class="com.android.tradefed.testtype.suite.module.<NAME>" />
Kontroler modułu będzie używany do określania, czy moduł ma być uruchamiany, na podstawie implementacji public abstract RunStrategy shouldRun(IInvocationContext context);.
Określanie, czy w przypadku awarii mają być zbierane określone logi
Podczas uruchamiania pełnego pakietu można poprosić o zbieranie określonych logów w przypadku awarii (zrzut ekranu, raport o błędach, logcat). W przypadku niektórych modułów żądany log może jednak nie mieć żadnej wartości i jego zbieranie będzie tylko stratą czasu. W takiej sytuacji moduł może wyraźnie określić, które logi go interesują:
<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>
UWAGA: jeśli to możliwe, implementacja kontrolerów powinna być ogólna, aby zmaksymalizować możliwość ponownego użycia. Pomijanie modułu na podstawie jego stanu powinno zostać sprawdzone przez właściciela modułu, aby uzyskać potwierdzenie, że pomijanie modułu jest dla niego odpowiednim zachowaniem.