TestNG - 在testng.xml中将列表作为参数传递

9

是否可以在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();
        }
    }
}

感谢您,Siva。
2个回答

10

您只能像这样传递基本类型,因此应将最后一个参数声明为“String”,然后将“{3,4}”转换为List。建议改用“3 4”,然后使用String#split进行解析。

如果您想传递更复杂的参数且不想费心进行转换,请切换到使用@DataProvider。


0
手册中可以看到,@Parameter可用于简单参数。对于复杂对象,您应该查看@Dataprovider

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接