2011-03-15 12 views
6

¿Sería posible pasar una lista en los parámetros de testNG? A continuación se muestra el código de ejemplotestng - lista de aprobación como parámetros en testng.xml

Ejemplo: tratando de pasar la lista de números en XML. No estoy seguro si TestNG no es compatible con esta característica. ¿O me falta algo?

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

Gracias, Siva

Respuesta

8

Solo puede pasar tipos básicos como este, por lo que debe declarar su último parámetro como "Cadena" y luego convertir "{3, 4}" a una Lista. Sugiero usar "3 4" en su lugar y simplemente analizarlo con String # split.

Si desea pasar parámetros más complejos y no desea preocuparse por la conversión, cambie a usar un @DataProvider.

0

Desde el manual, @Parameter se puede utilizar para los parámetros simples. Para objetos complejos, debe mirar @Dataprovider

Cuestiones relacionadas