ایجاد یک پیکربندی XML یکپارچه برای تعریف یک تست همیشه عملی نیست. اگر بخواهید بخشی از تنظیمات را برای اجرای تستهای مشابه دوباره استفاده کنید، مجبور خواهید شد دو فایل XML غولپیکر را کپی و نگهداری کنید.
اینجاست که تگهای template و include در تعریف پیکربندی XML Tradefed مفید واقع میشوند. آنها به شما امکان میدهند تا در برخی پیکربندیهای XML، متغیرهایی را برای اضافه کردن بخشی از پیکربندی XML دیگر تنظیم کنید.
تعریف مثال برای الگوها
<configuration description="Common base configuration for local runs with minimum overhead">
<build_provider class="com.android.tradefed.build.BootstrapBuildProvider" />
<template-include name="preparers" default="empty" />
<template-include name="test" default="empty" />
<template-include name="reporters" default="empty" />
</configuration>
قالبها، متغیرهایی با یک name برای ارجاع به آنها و یک فیلد default اختیاری هستند. فیلد پیشفرض، XML جایگزین پیشفرض را که باید استفاده شود، تعریف میکند.
برای جایگزینی یک الگو برای یک پیکربندی مشخص، باید پارامتر دستور زیر به خط فرمان اضافه شود:
--template:map <name of template>=<replacement XML config path>
--template:map preparers=empty
برای مثال:
<template-include name="preparers" default="empty" />
مرجع empty در این مورد به پیکربندی empty.xml اشاره دارد که حاوی هیچ چیز نیست؛ ما از آن به عنوان مرجع خود برای جایگزینی با nothing استفاده میکنیم.
مسیر پیکربندیهای XML میتواند مطلق یا نسبی به پوشه res/config در منابع JAR Tradefed باشد. در اینجا چند مورد از مکانهای آنها آورده شده است:
- ابزارها/تجارت/هسته/res/پیکربندی
- ابزارها/دفاتر مبادلات/هسته/آزمایشها/res/پیکربندی
- ابزارها/تعویض/مشارکت/res/پیکربندی
تعریف مثال از شامل
<configuration description="Common base configuration for local runs with minimum overhead">
<build_provider class="com.android.tradefed.build.BootstrapBuildProvider" />
<include name="empty"/>
</configuration>
Includeها سادهتر از Templateها هستند زیرا به هیچ آرگومان خط فرمانی نیاز ندارند؛ آنها مستقیماً XML ارجاع شده در تگ name را گسترش میدهند. مشابه Templateها، مسیر پیکربندی میتواند مطلق یا نسبی باشد. با این حال، برای includes توصیه میکنیم فقط از مسیرهای نسبی استفاده کنید زیرا در Tradefed قابل حملتر هستند. اگر Tradefed به دستگاه دیگری منتقل شود، مسیرهای مطلق معتبر نخواهند بود.
پیکربندی نادرست
در صورت پیکربندی نادرست، مانند زمانی که XML جایگزین پیدا نشود، Tradefed یک ConfigurationException با شرح آنچه که به نظر میرسد وجود ندارد یا پیکربندی نادرستی دارد، ارسال میکند.