AndroidTest.xml से तय किया गया हर सुइट मॉड्यूल, एक खास module_controller ऑब्जेक्ट शामिल कर सकता है. इससे मॉड्यूल के कुछ व्यवहार में बदलाव किया जा सकता है:
कुछ शर्तों के आधार पर, मॉड्यूल को रन करना है या नहीं
BaseModuleController को लागू करके और इसे AndroidTest.xml में इस तरह जोड़कर:
<object type="module_controller" class="com.android.tradefed.testtype.suite.module.<NAME>" />
मॉड्यूल कंट्रोलर का इस्तेमाल यह तय करने के लिए किया जाएगा कि मॉड्यूल को रन करना है या नहीं. यह फ़ैसला, public abstract RunStrategy shouldRun(IInvocationContext context); के लागू होने के आधार पर लिया जाएगा.
फ़ेल होने पर, कुछ लॉग इकट्ठा करने हैं या नहीं
पूरा सुइट रन करते समय, सुइट लेवल पर यह अनुरोध किया जा सकता है कि फ़ेल होने पर कुछ लॉग (स्क्रीनशॉट, बग रिपोर्ट, लॉगकैट) इकट्ठा किए जाएं. हालांकि, कुछ मॉड्यूल के लिए, अनुरोध किया गया कोई खास लॉग काम का नहीं हो सकता. साथ ही, इसे इकट्ठा करने में समय बर्बाद होगा. ऐसे में, कोई मॉड्यूल साफ़ तौर पर यह बता सकता है कि उसे किन लॉग में दिलचस्पी है:
<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>
ध्यान दें: अगर संभव हो, तो कंट्रोलर को सामान्य तरीके से लागू किया जाना चाहिए, ताकि उन्हें बार-बार इस्तेमाल किया जा सके. साथ ही, किसी मॉड्यूल को उसकी शर्त के आधार पर स्किप करने के फ़ैसले की समीक्षा, मॉड्यूल के मालिक को करनी चाहिए. इससे यह पक्का किया जा सकेगा कि मॉड्यूल को स्किप करना, उनके लिए सही तरीका है.