2011-03-15 52 views
6

是否可以在testNG參數中傳遞一個列表。下面是示例代碼testng - 作爲參數在testng.xml中的傳遞列表

示例:嘗試傳遞XML中的數字列表。不確定TestNG是否不支持此功能。或者我錯過了什麼?

<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

你只能像這樣傳遞基本類型,所以你應該聲明你的最後一個參數爲「String」,然後將「{3,4}」轉換爲List。我建議使用「3 4」,而不是用String#split來解析它。

如果您想傳遞更復雜的參數並且您不想轉換,請切換爲使用@DataProvider。

0

manual@Parameter可用於簡單的參數。對於複雜的對象,你應該看看@Dataprovider