مدیریت گزینه در قلب رویکرد مدولار فدراسیون تجارت قرار دارد. به طور خاص، گزینهها مکانیزمی هستند که توسط آن Developer، Integrator و Test Runner میتوانند بدون نیاز به تکرار کارهای یکدیگر با هم کار کنند. به زبان ساده، پیادهسازی مدیریت گزینه ما به توسعهدهنده اجازه میدهد تا یک عضو کلاس جاوا را بهعنوان قابل تنظیم علامتگذاری کند، در این مرحله ممکن است مقدار آن عضو توسط انتگرالکننده افزوده یا لغو شود، و ممکن است متعاقباً توسط 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 به این نقاط پیکربندی دسترسی دارد. اول از همه، آنها یک Command (یعنی یک پیکربندی و همه آرگومان های آن) را با دستور run command <name>
اجرا می کنند (یا به اختصار run <name>
). فراتر از آن، آنها میتوانند هر فهرستی از آرگومانها را مشخص کنند که بخشی از فرمان است، که ممکن است جایگزین یا الحاق به فیلدهای تعیینشده توسط Lifecycle Objects در هر پیکربندی شود.
برای اجرای تست تاخیر کم با شماره تلفن های 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
تنظیم کرد.