مدیریت گزینه در قلب رویکرد مدولار فدراسیون تجارت قرار دارد. به طور خاص، گزینهها مکانیزمی هستند که توسط آن توسعهدهنده، یکپارچهساز و تست رانر میتوانند بدون نیاز به تکرار کارهای یکدیگر با هم کار کنند. به زبان ساده، پیادهسازی مدیریت گزینه ما به توسعهدهنده اجازه میدهد تا یک عضو کلاس جاوا را بهعنوان قابل تنظیم علامتگذاری کند، در این مرحله مقدار آن عضو میتواند توسط انتگرالکننده افزوده یا لغو شود، و متعاقباً میتواند توسط Test Runner افزوده یا لغو شود. این مکانیسم برای همه انواع ذاتی جاوا و همچنین برای هر نمونه Map
یا Collection
از انواع ذاتی کار می کند.
توجه: مکانیسم کنترل اختیار فقط برای کلاسهایی کار میکند که یکی از رابطهای موجود در Test Lifecycle را پیادهسازی میکنند، و تنها زمانی که آن کلاس توسط ماشینهای چرخه حیات نمونهسازی شده باشد.
توسعه دهنده
برای شروع، توسعهدهنده عضوی را با حاشیهنویسی @Option
علامتگذاری میکند. آنها (حداقل) name
و مقادیر description
را مشخص میکنند، که نام آرگومان مرتبط با آن گزینه را مشخص میکند، و توضیحی که در کنسول TF هنگام اجرای دستور با --help
یا --help-all
نمایش داده میشود.
به عنوان مثال، فرض کنید میخواهیم یک تست تلفنی کاربردی بسازیم که شماره تلفنهای مختلفی را شمارهگیری میکند و انتظار دارد که پس از اتصال، دنبالهای از زنگهای DTMF را از هر شماره دریافت کند.
public class PhoneCallFuncTest extends IRemoteTest { @Option(name = "timeout", description = "How long to wait for connection, in millis") private long mWaitTime = 30 * 1000; // 30 seconds @Option(name = "call", description = "Key: Phone number to attempt. " + "Value: DTMF to expect. May be repeated.") private Map<String, String> mCalls = new HashMap<String, String>; public PhoneCallFuncTest() { mCalls.add("123-456-7890", "01134"); // default }
این تمام چیزی است که توسعه دهنده برای تنظیم دو نقطه پیکربندی برای آن آزمایش لازم است. سپس می توانند خاموش شوند و از mWaitTime
و mCalls
به طور معمول استفاده کنند، بدون اینکه توجه زیادی به این واقعیت داشته باشند که آنها قابل تنظیم هستند. از آنجایی که فیلدهای @Option
بعد از نمونه سازی کلاس تنظیم می شوند، اما قبل از فراخوانی متد run
، راه آسانی را برای پیاده سازان فراهم می کند تا پیش فرض هایی را برای یا انجام نوعی فیلتر در فیلدهای Map
و Collection
انجام دهند، که در غیر این صورت ضمیمه می شوند. فقط
یکپارچه ساز
انتگرالگر در دنیای تنظیماتی که به زبان XML نوشته شده اند کار می کند. فرمت پیکربندی به انتگرال اجازه می دهد تا برای هر فیلد @Option
مقداری تنظیم کند (یا اضافه کند). برای مثال، فرض کنید انتگرال میخواهد یک تست با تأخیر پایینتر تعریف کند که شماره پیشفرض را فراخوانی میکند، و همچنین یک تست طولانیمدت که اعداد مختلفی را فراخوانی میکند. آنها می توانند یک جفت پیکربندی ایجاد کنند که ممکن است به شکل زیر باشد:
<?xml version="1.0" encoding="utf-8"?> <configuration description="low-latency default test; low-latency.xml"> <test class="com.example.PhoneCallFuncTest"> <option name="timeout" value="5000" /> </test> </configuration>
<?xml version="1.0" encoding="utf-8"?> <configuration description="call a bunch of numbers; many-numbers.xml"> <test class="com.example.PhoneCallFuncTest"> <option name="call" key="111-111-1111" value="#*#*TEST1*#*#" /> <option name="call" key="222-222-2222" value="#*#*TEST2*#*#" /> <!-- ... --> </test> </configuration>
دونده تست
Test Runner همچنین از طریق کنسول Trade Federation به این نقاط پیکربندی دسترسی دارد. اول از همه، آنها یک دستور (یعنی یک پیکربندی و همه آرگومان های آن) را با دستور run command <name>
(یا به اختصار run <name>
) اجرا می کنند. فراتر از آن، آنها می توانند هر لیستی از آرگومان ها را مشخص کنند که بخشی از فرمان است، که می تواند جایگزین یا الحاق به فیلدهای مشخص شده توسط اشیاء چرخه حیات در هر پیکربندی شود.
برای اجرای تست تاخیر کم با شماره تلفن های many-numbers
، Test Runner می تواند موارد زیر را اجرا کند:
tf> run low-latency.xml --call 111-111-1111 #*#*TEST1*#*# --call 222-222-2222 #*#*TEST2*#*#
یا، برای به دست آوردن یک اثر مشابه از جهت مخالف، Test Runner می تواند زمان انتظار برای تست many-numbers
را کاهش دهد:
tf> run many-numbers.xml --timeout 5000
سفارش گزینه
ممکن است متوجه شوید که گزینه call
زیربنای پیاده سازی Map
است، بنابراین با --call
های مکرر در خط فرمان، همه آنها ذخیره می شوند.
timeout
انتخاب، که دارای پیاده سازی اساسی long
است، تنها می تواند یک مقدار را ذخیره کند. بنابراین فقط آخرین مقدار مشخص شده ذخیره می شود. --timeout 5 --timeout 10
منجر به timeout
شامل 10 می شود.
در صورت وجود List
یا Collection
به عنوان پیاده سازی اساسی، تمام مقادیر به ترتیب مشخص شده در خط فرمان ذخیره می شوند.
گزینه های بولی
گزینه های نوع بولی زیربنایی را می توان با ارسال مستقیم نام گزینه روی true
تنظیم کرد، به عنوان مثال، --[option-name]
و می توان با استفاده از نحو --no-[option-name]
روی false
تنظیم کرد.