2011-03-15 5 views
6

TestNG parametrelerinde bir listeyi geçmek mümkün olabilir mi? Aşağıdaki örnek kodtestng - testng.xml dosyasında parmetreler olarak geçme listesi

Örnek kod: XML'de sayıların listesini geçmeye çalışmak. TestNG'nin bu özelliği desteklemediğinden emin değil. Yoksa hiçbir şey eksik miyim?


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(); 
     } 
    } 
} 

Teşekkür

<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> 

, Siva

manual itibaren

cevap

8

'a bakmanız gerekir. Bunun gibi temel türleri yalnızca geçebilirsiniz, böylece son parametrenizi "String" olarak bildirmeli ve sonra "{3, 4}" bir Listeye dönüştürmelisiniz. Bunun yerine "3 4" kullanmayı ve sadece String # split ile ayrıştırmayı öneriyorum.

Daha karmaşık parametreler geçirmek istiyorsanız ve dönüştürme ile uğraşmak istemiyorsanız, @DataProvider kullanmaya geçin.

0

, @Parameter basit parametreler için kullanılabilir. Karmaşık nesneler için, @Dataprovider