2011-03-15 11 views
6

में पैरामीटर के रूप में उत्तीर्ण सूची को टेस्टएनजी पैरामीटर में एक सूची पास करना संभव होगा। नीचे नमूना कोडtestng - testng.xml

उदाहरण: XML में संख्याओं की सूची उत्तीर्ण करने का प्रयास कर रहा है। निश्चित नहीं है कि क्या टेस्टएनजी इस सुविधा का समर्थन नहीं करता है। या मैं कुछ याद कर रहा हूँ?

<suite name="Suite" parallel="none"> 
    <test name="Test" preserve-order="false"> 
     <parameter name="A" value="1"/> 
     <parameter name="B" value="2"/> 
     <parameter name="C" value="3"/> 
     <parameter name="D" value="{4,5}"/> 
     <classes> 
      <class name="TestNGXMLData"/> 
     </classes> 
    </test> 
</suite> 

import java.util.ArrayList; 
import java.util.Iterator; 
import java.util.List; 
import com.thoughtworks.selenium.Selenium; 
import static org.testng.Assert.assertTrue; 
import org.testng.annotations.*; 
import com.thoughtworks.selenium.*; 

public class TestNGXMLData { 

    @Test 
    @Parameters(value = { "A", "B", "C", "D" }) 
    public void xmlDataTest(String A, String B, String C, ArrayList<String> ls) { 

     System.out.println("Passing Three parameter to Test " + A + " and " + B + " and " + C); 

     Iterator it = ls.iterator(); 
     while (it.hasNext()) { 
      String value = (String) it.next(); 
     } 
    } 
} 

धन्यवाद, शिव

उत्तर

8

आप केवल इस तरह के मूल प्रकारों को पारित कर सकते हैं, इसलिए आपको अपना अंतिम पैरामीटर "स्ट्रिंग" के रूप में घोषित करना चाहिए और फिर सूची में "{3, 4}" को परिवर्तित करना चाहिए। मैं इसके बजाय "3 4" का उपयोग करने का सुझाव देता हूं और इसे स्ट्रिंग # विभाजन के साथ बस पार्स करता हूं।

यदि आप अधिक जटिल पैरामीटर पास करना चाहते हैं और आप कनवर्ट करने से परेशान नहीं होना चाहते हैं, तो @DataProvider का उपयोग करने के लिए स्विच करें।

0

manual से, @Parameter सरल मानकों के लिए इस्तेमाल किया जा सकता है। जटिल वस्तुओं के लिए, आपको @Dataprovider

संबंधित मुद्दे