ایجاد یک پیکربندی XML یکپارچه برای تعریف تست همیشه عملی نیست. اگر می خواهید از بخشی از تنظیمات برای اجرای آزمایش های مشابه استفاده مجدد کنید، مجبور خواهید بود دو فایل XML غول پیکر را کپی و نگهداری کنید.
اینجاست که template
و تگهای include
در تعریف Tradefed XML Configuration مفید هستند. آنها به شما این امکان را می دهند که متغیرهایی را در برخی از پیکربندی 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
اشاره دارد که حاوی هیچ چیز نیست. ما از آن به عنوان مرجع خود برای جایگزینی با هیچ استفاده می کنیم.
مسیر تنظیمات XML می تواند مطلق یا نسبی به پوشه res/config
در منابع JAR Tradefed باشد. در اینجا تعدادی از مکان های آنها آورده شده است:
- tools/tradefederation/core/res/config
- tools/tradefederation/core/tests/res/config
- tools/tradedeferation/contrib/res/config
تعریف مثال شامل
<configuration description="Common base configuration for local runs with minimum overhead">
<build_provider class="com.android.tradefed.build.BootstrapBuildProvider" />
<include name="empty"/>
</configuration>
شامل ساده تر از Templates هستند زیرا به آرگومان های خط فرمان نیاز ندارند. آنها به طور مستقیم XML مرجع در تگ name
را گسترش می دهند. مشابه الگوها، مسیر پیکربندی می تواند مطلق یا نسبی باشد. با این حال، برای includes
، توصیه می کنیم فقط از مسیرهای نسبی استفاده کنید زیرا در Tradefed قابل حمل تر هستند. اگر Tradefed به ماشین دیگری منتقل شود، مسیرهای مطلق معتبر نیستند.
پیکربندی اشتباه
در صورت پیکربندی نادرست، مانند زمانی که XML جایگزین یافت نمیشود، Tradefed یک ConfigurationException
با شرح موارد گم شده یا اشتباه پیکربندی میکند.