TestNG. Pasar parámetros a los métodos test
Parámetros
Los
métodos test no tienen porque tener parámetros, pero si necesitamos
hacer uso de ellos podemos utilizar la anotación @DataProvider
para crearlos y en la anotación @Test se indica que DataProvider se usará.
Un método anotado con @DataProvider
devolverá un array de array de objetos (Object[][]), donde:
- el tamaño de la primera dimensión indica el número de veces que el método será invocado.
- la segunda dimensión contiene un array de objetos que deben ser compatibles con el tipo de parámetros del método test que hará uso de ellos.
Ejemplo:
package
com.me.mytestng.clases;import
org.testng.annotations.DataProvider;
import
org.testng.annotations.Test;public
class
ParametrosTest
{
/**
* Test que recibe dos parámetros.
* @param nombre
/**
* Test que recibe dos parámetros.
* @param nombre
* @param
edad
*/
@Test(dataProvider = "param1")
public void test2Parametros(String nombre, Integer edad) {
System.out.println("Nombre: " + nombre + " Edad: " + edad);
}
/**
* Método DataProvider.
* Este método devolverá un array de array de objetos (Object[][]), donde
* el tamaño de la primera dimensión indica el número de veces que el
* método será invocado y la segunda dimensión contiene un array de
* objetos que deben ser compatibles con el tipo de parámetros del
* método test.
* @return
*/
@DataProvider(name = "param1")
public Object[][] crear2Datos() {
return new Object[][]{
{"Alejandro", new Integer(33)},
{"Luis", new Integer(27)}
};
}
/**
* Test que recibe un parámetro.
* @param cadena
*/
@Test(dataProvider = "param2")
public void test1Parametro(String cadena) {
System.out.println("Cadena: " + cadena);
}
/**
* Método DataProvider.
* Devolverá una cadena.
* @return
*/
@DataProvider(name = "param2")
public Object[][] crearCadena() {
return new Object[][]{
{"Esto es una cadena"}
};
}
}
*/
@Test(dataProvider = "param1")
public void test2Parametros(String nombre, Integer edad) {
System.out.println("Nombre: " + nombre + " Edad: " + edad);
}
/**
* Método DataProvider.
* Este método devolverá un array de array de objetos (Object[][]), donde
* el tamaño de la primera dimensión indica el número de veces que el
* método será invocado y la segunda dimensión contiene un array de
* objetos que deben ser compatibles con el tipo de parámetros del
* método test.
* @return
*/
@DataProvider(name = "param1")
public Object[][] crear2Datos() {
return new Object[][]{
{"Alejandro", new Integer(33)},
{"Luis", new Integer(27)}
};
}
/**
* Test que recibe un parámetro.
* @param cadena
*/
@Test(dataProvider = "param2")
public void test1Parametro(String cadena) {
System.out.println("Cadena: " + cadena);
}
/**
* Método DataProvider.
* Devolverá una cadena.
* @return
*/
@DataProvider(name = "param2")
public Object[][] crearCadena() {
return new Object[][]{
{"Esto es una cadena"}
};
}
}
El resultado de ejecutar el test será:
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running
com.me.mytestng.clases.ParametrosTest
Cadena: Esto es una
cadena
Nombre: Alejandro
Edad: 33
Nombre: Luis Edad: 27
Tests run: 3,
Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.466 sec
Results :
Tests run: 3,
Failures: 0, Errors: 0, Skipped: 0
Los datos que necesita un test pueden estar en una
clase externa a la clase test. Para indicar la clase que contiene los
datos se hace uso del atributo dataProviderClass
en la anotación @Test.
Clase externa que provee los datos:
package
com.me.mytestng.clases;import
org.testng.annotations.DataProvider;public
class
StaticProvider
{
@DataProvider(name = "datosExternos")
public static Object[][] crear2Datos() {
return new Object[][]{
{"Juan", new Integer(33)},
{"Antonio", new Integer(27)}
};
}
}
@DataProvider(name = "datosExternos")
public static Object[][] crear2Datos() {
return new Object[][]{
{"Juan", new Integer(33)},
{"Antonio", new Integer(27)}
};
}
}
Clase test que hace uso de los datos externos:
package
com.me.mytestng.clases;import
org.testng.annotations.DataProvider;
import
org.testng.annotations.Test;public
class
ParametrosTest
{
/**
* Test con dos parámetros externos a esta clase.
* @param nombre * @param edad
*/
@Test(dataProvider = "datosExternos", dataProviderClass = StaticProvider.class)
public void test2ParametrosExternos(String nombre, Integer edad) {
System.out.println("Nombre: " + nombre + " Edad: " + edad);
}
}
/**
* Test con dos parámetros externos a esta clase.
* @param nombre * @param edad
*/
@Test(dataProvider = "datosExternos", dataProviderClass = StaticProvider.class)
public void test2ParametrosExternos(String nombre, Integer edad) {
System.out.println("Nombre: " + nombre + " Edad: " + edad);
}
}
Comentarios
Publicar un comentario