Friday, 15 July 2011

java - How to make TestNG @DataProvider which returns several objects returns only one? -


मेरे पास @DataProvider निम्नलिखित है:

  @DataProvider ( नाम = "क्रेडेंशियल प्रदाता", समानांतर = सच) सार्वजनिक स्थिर ऑब्जेक्ट [] [] क्रेडेंशियल्स प्रदाता () {... के लिए (int i = 0; i & lt; login.size (); i ++) {क्रेडेंशियल [i] = नया ऑब्जेक्ट [] {Login.get (i) [0], पासवर्ड.गेट (आई) [0]}; } क्रेडेंशियल वापसी; }  

यह परीक्षण के लिए क्रेडेंशियल उत्पन्न करने के लिए प्रयोग किया जाता है जो समानांतर मोड में चल रहे हैं:

  @Test (dataProvider = "CredentialsProvider") सार्वजनिक शून्य लॉगिन (स्ट्रिंग) लॉगिन, स्ट्रिंग पासवर्ड)  

लेकिन कभी-कभी मैं एक ही परीक्षण के साथ एक ही रन के साथ एक ही @DataProvider का उपयोग करना चाहता हूं। मुझे उम्मीद थी कि invocationCount में @Test विधि का उपयोग करने में मदद मिलेगी, लेकिन गलत था। प्रदाता द्वारा दिए गए वस्तुओं की संख्या को बिना स्रोतों को बदले बिना वापस लौटाए जाने के लिए क्या @ डेटाप्रदाता को आमंत्रित करने का कोई समाधान है?

AFAIK आप डेटा प्रदाता पक्ष पर केवल इस समस्या से निपट सकते हैं।

<प्री> @DataProvider (नाम = "क्रेडेंशियल प्रदाता", समानांतर = सच) सार्वजनिक स्थिर ऑब्जेक्ट [ ] [] क्रेडेंशियल्स प्रोवाइडर (विधि विधि) {...} @ डेटाप्रदाता (नाम = "क्रेडेंशियल प्रदाता", समानांतर = सच) सार्वजनिक स्थिर ऑब्जेक्ट [] [] क्रेडेंशियल प्रदाता (आईटेस्ट कंटैंट संदर्भ) {...}

दोनों ही मामलों में आप टेस्ट केस के संदर्भ से जानकारी प्राप्त कर सकते हैं जो डेटा प्रदाता का उपयोग कर रहे हैं। पहले मामले में, उदाहरण के लिए method.getName (); आपको @Test विधि का नाम देता है दूसरे मामले में, context.getName (); आपको टेस्ट सूट के अंदर टेस्ट केस ( & lt; test name = "TestName" & gt; ) का नाम देता है। / P>

और मैं इस तरह से कुछ मतलब:

  के लिए (int i = 0; i & lt; login.size (); i ++) {क्रेडेंशियल [i] = नया ऑब्जेक्ट [ ] {Login.get (i) [0], पासवर्ड.गेट (आई) [0]}; अगर (i & gt; MAX_COUNT & amp; amp; "EXPECTED_TEST_NAME"। बराबर (context.getName ())) {ब्रेक; }}  

No comments:

Post a Comment