ट्रेडफेड में विकल्प प्रबंधन

ऑप्शन प्रबंधन ट्रेड फेडरेशन के मॉड्यूलर दृष्टिकोण के केंद्र में है। विशेष रूप से, विकल्प वह तंत्र है जिसके द्वारा डेवलपर, इंटीग्रेटर और टेस्ट रनर एक-दूसरे के काम की नकल किए बिना एक साथ काम कर सकते हैं। सीधे शब्दों में कहें, विकल्प प्रबंधन का हमारा कार्यान्वयन डेवलपर को जावा क्लास सदस्य को कॉन्फ़िगर करने योग्य के रूप में चिह्नित करने की अनुमति देता है, जिस बिंदु पर उस सदस्य का मूल्य इंटीग्रेटर द्वारा बढ़ाया या ओवरराइड किया जा सकता है, और बाद में टेस्ट रनर द्वारा बढ़ाया या ओवरराइड किया जा सकता है। यह तंत्र सभी जावा आंतरिक प्रकारों के साथ-साथ आंतरिक प्रकारों के किसी भी Map या Collection के लिए काम करता है।

नोट: विकल्प-हैंडलिंग तंत्र केवल उन कक्षाओं के लिए काम करता है जो परीक्षण जीवनचक्र में शामिल इंटरफेस में से किसी एक को लागू करते हैं, और केवल तब जब उस वर्ग को जीवनचक्र मशीनरी द्वारा त्वरित किया जाता है।

डेवलपर

आरंभ करने के लिए, डेवलपर एक सदस्य को @Option एनोटेशन के साथ चिह्नित करता है। वे (कम से कम) name और description मान निर्दिष्ट करते हैं, जो उस विकल्प से जुड़े तर्क नाम को निर्दिष्ट करते हैं, और वह विवरण जो --help या --help-all के साथ कमांड चलाने पर TF कंसोल पर प्रदर्शित किया जाएगा।

उदाहरण के तौर पर, मान लें कि हम एक कार्यात्मक फोन परीक्षण बनाना चाहते हैं जो विभिन्न प्रकार के फोन नंबर डायल करेगा, और कनेक्ट होने के बाद प्रत्येक नंबर से डीटीएमएफ टोन का अनुक्रम प्राप्त करने की उम्मीद करेगा।

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>

परीक्षण धावक

टेस्ट रनर के पास ट्रेड फेडरेशन कंसोल के माध्यम से इन कॉन्फ़िगरेशन बिंदुओं तक पहुंच भी है। सबसे पहले और सबसे महत्वपूर्ण, वे run command <name> निर्देश (या संक्षेप में run <name> ) के साथ एक कमांड चलाएंगे (अर्थात, एक कॉन्फ़िगरेशन और उसके सभी तर्क)। इसके अलावा, वे तर्कों की किसी भी सूची को निर्दिष्ट कर सकते हैं जो कमांड का हिस्सा है, जो प्रत्येक कॉन्फ़िगरेशन के भीतर जीवनचक्र ऑब्जेक्ट द्वारा निर्दिष्ट फ़ील्ड को प्रतिस्थापित या जोड़ सकता है।

many-numbers फ़ोन नंबरों के साथ कम-विलंबता परीक्षण चलाने के लिए, टेस्ट रनर निष्पादित कर सकता है:

tf> run low-latency.xml --call 111-111-1111 #*#*TEST1*#*# --call 222-222-2222 #*#*TEST2*#*#

या, विपरीत दिशा से समान प्रभाव प्राप्त करने के लिए, टेस्ट रनर many-numbers परीक्षण के लिए प्रतीक्षा समय को कम कर सकता है:

tf> run many-numbers.xml --timeout 5000

विकल्प आदेश

आप देख सकते हैं कि कार्यान्वयन में अंतर्निहित call विकल्प एक Map है, इसलिए कमांड लाइन पर बार-बार --call करने पर वे सभी संग्रहीत हो जाएंगे।

विकल्प timeout , जिसमें long का अंतर्निहित कार्यान्वयन है, केवल एक मान संग्रहीत कर सकता है। तो केवल अंतिम निर्दिष्ट मान संग्रहीत किया जाएगा। --timeout 5 --timeout 10 का परिणाम 10 युक्त timeout होगा।

अंतर्निहित कार्यान्वयन के रूप में किसी List या Collection के मामले में, सभी मान कमांड लाइन पर निर्दिष्ट क्रम में संग्रहीत किए जाएंगे।

बूलियन विकल्प

बूलियन अंतर्निहित प्रकार के विकल्पों को विकल्प नाम को सीधे पास करके true पर सेट किया जा सकता है, उदाहरण के लिए, --[option-name] और सिंटैक्स --no-[option-name] का उपयोग करके false पर सेट किया जा सकता है।

यह सभी देखें

सुइट और मॉड्यूल के लिए विकल्प पास करें