ההגדרות של 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=
, שמפוענח בזמן הריצה. לכן, כל עוד קובץ ה-JAR שמכיל את המחלקה נמצא בנתיב המחלקות של Java ב-Tradefed בזמן הריצה, הוא יימצא ויפוענח.
סדר האובייקטים ב-Tradefed
הסדר של התגים השונים לא משנה. לדוגמה, אין הבדל אם מציינים את build_provider
אחרי target_preparer
. הסדר של הפעלת הבדיקה נאכף על ידי ה-harness עצמו, כך שהקריאות תמיד יתבצעו בסדר הנכון.
הסדר של אובייקטים עם אותו תג כן משנה. לדוגמה, אם מוגדרים שני אובייקטים מסוג target_preparer
, הם יופעלו לפי סדר ההגדרה שלהם ב-XML. חשוב להבין את זה כי זה יכול לשנות את מצב הסיום של הגדרת המכשיר. לדוגמה, הצגת הודעה ואז התקנת APK לא יהיו זהות להתקנת APK והצגת הודעה, כי הצגת ההודעה תמחק את המכשיר.