ההגדרות של Tradefed מבוססות על מבנה XML שמתאר את הבדיקה שצריך להריץ ואת שלבי ההכנה וההגדרה שצריך לבצע.
באופן תיאורטי, אפשר להגדיר הכול ב-XML עבור פקודה אחת. אבל בפועל, עדיף להשתמש בקובצי XML של תבנית בסיסית ולהתאים אותם אישית באמצעות פרמטרים נוספים של שורת הפקודה.
מבנה
<configuration description="<description of the configuration>">
<!-- A build provider that takes local device information -->
<build_provider class="com.android.tradefed.build.BootstrapBuildProvider" />
<!-- Some target preparation, disabled by default -->
<target_preparer class="com.android.tradefed.targetprep.PreloadedClassesPreparer">
<option name="disable" value="true" />
</target_preparer>
<!-- One test running some unit tests -->
<test class="com.android.tradefed.testtype.HostTest">
<option name="class" value="com.android.tradefed.build.BuildInfoTest" />
</test>
<!-- [OPTIONAL] -->
<logger class="com.android.tradefed.log.FileLogger">
<option name="log-level" value="VERBOSE" />
<option name="log-level-display" value="VERBOSE" />
</logger>
<!-- [OPTIONAL] -->
<log_saver class="com.android.tradefed.result.FileSystemLogSaver" />
<!-- As many reporters as we want -->
<result_reporter class="com.android.tradefed.result.ConsoleResultReporter" />
<result_reporter class="com.android.tradefed.result.suite.SuiteResultReporter" />
<result_reporter class="com.android.tradefed.result.MetricsXMLResultReporter"/>
</configuration>
קובץ ה-XML הכולל של Tradefed מופרד באמצעות התגים <configuration>. Tradefed
objects מוגדרים בתגים משלהם, לדוגמה: build_provider, target_preparer, test וכו'. הסבר מפורט על המטרות של כל אחד מהם מופיע בקטע ארכיטקטורה.
לכל אובייקט יש את מחלקת ה-Java שמשויכת לאובייקט, שמוגדרת ב-class= ומתבצעת בה פעולת resolve בזמן הריצה. לכן, כל עוד קובץ ה-JAR שמכיל את המחלקה נמצא בנתיב המחלקות של Tradefed Java בזמן הריצה, הוא יימצא ויבוצע בו פעולת resolve.
סדר של אובייקטים ב-Tradefed
הסדר של התגים השונים לא משנה. לדוגמה, אין הבדל אם מציינים את build_provider אחרי target_preparer. התבנית עצמה אוכפת את רצף הפעלת הבדיקה, כך שהיא תמיד תפעיל אותן בסדר הנכון.
הסדר של אובייקטים עם אותו תג כן משנה. לדוגמה, אם מוגדרים שני אובייקטים מסוג target_preparer, הם יופעלו לפי סדר ההגדרה שלהם ב-XML. חשוב להבין את זה כי זה יכול לשנות את המצב הסופי של הגדרת המכשיר. לדוגמה, הפעלה של Flash ואז התקנה של APK לא תהיה זהה להתקנה של APK והפעלה של Flash, כי הפעלת Flash תמחק את המכשיר.