是否可以在testNG参数中传递列表。以下是示例代码
示例:尝试传递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();
}
}
}
谢谢, 希瓦
答案 0 :(得分:9)
您只能传递这样的基本类型,因此您应将最后一个参数声明为“String”,然后将“{3,4}”转换为List。我建议改用“3 4”,然后用String#split解析它。
如果您想传递更复杂的参数并且不想打扰转换,请切换到使用@DataProvider。
答案 1 :(得分:0)
从manual,@Parameter
可用于简单参数。对于复杂对象,您应该查看@Dataprovider