প্রতিটি স্যুট মডিউলে (যা 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>
দ্রষ্টব্য: পুনঃব্যবহারযোগ্যতা সর্বাধিক করার জন্য, সম্ভব হলে কন্ট্রোলারগুলোর বাস্তবায়ন জেনেরিক হওয়া উচিত। এবং কোনো শর্তের ভিত্তিতে একটি মডিউল বাদ দেওয়ার বিষয়টি মডিউল মালিকের দ্বারা পর্যালোচিত হওয়া উচিত, যাতে তিনি অনুমোদন করেন যে মডিউলটি বাদ দেওয়া তার জন্য একটি সঠিক আচরণ।