JUnit - Test Parametrizados - ¿Como Parametrizar un test? - Annotation @Parameters - Parameterized.class

Hola ya contentos casi finalizando esta guía de  JUnit, hoy vamos a ver como parametrizar un clase, como siempre seguimos hablando de  JUnit 4.X.

JUnit  - ¿Como Parametrizar un test? - Annotation @Parameters - Parameterized.class

Bueno antes de ver como parametrizar vamos a aplicar que parametrizar un test nos sirve para correr un test con valores diferentes.

Para realizar esto tenemos utilizaremos un @RunWith indicando que se correrá con la clase Parameterized.class. Ver anotaciones JUnit (aca).

La case test debe contener un método estático anotado con la anotación @Parameterized.Parameters  o directamente @Parameters que genera y retorna una colección de matrices. Cada elemento de esta colección se utiliza como parámetro para el método de prueba.

También es necesario crear un constructor en el que guarde los valores de cada test. El número de elementos de cada matriz proporcionado por el método con la anotación @Parameters debe corresponder al número de parámetros en el constructor de la clase. Se crea la clase para cada parámetro y los valores de las pruebas se pasan a través del constructor a la clase. 

IMPORTANTE:
Los métodos que utilicen estos parámetros se ejecutaran n veces, donde n es la cantidad de elementos en la matriz.

Ejemplo:
package ar.com.ladooscurojava.model.test;
import java.util.Arrays;
import java.util.Collection;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

/**
* @author nconde
*/
@RunWith (value = Parameterized.class)
public class PerroTest {

private String nombre;
public PerroTest(String nombre) {
this.nombre = nombre;
}

@Parameters
public static Collection<Object[]> data() {
Object[][] data = new Object[][] { {"Fido" }, {"Dido"}, {"Rudolf" } };
return Arrays.asList(data);
}

@Test
public void testNombrePerros() {
System.out.println("Nombre del perro: " + nombre);
}
}

Salida de consola
Nombre del perro: Fido
Nombre del perro: Dido
Nombre del perro: Rudolf


En el caso que quisiéramos probar con mas parámetros:

Ejemplo 2:
package ar.com.ladooscurojava.model.test;
import java.util.Arrays;
import java.util.Collection;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
/**
* @author nconde
*/

@RunWith (value = Parameterized.class)
public class PerroTest {

private String nombre;
private int edadPerro;

public PerroTest(String nombre, int edadPerro) {
this.nombre = nombre;
this.edadPerro = edadPerro;
}

@Parameters
public static Collection<Object[]> data() {
Object[][] data = new Object[][] { {"Fido",4 }, {"Dido",5}, {"Rudo",10 } };
return Arrays.asList(data);
}

@Test
public void testNombrePerros() {
System.out.println("Nombre del perro: " + nombre + ", Edad: " + edadPerro);
}
}

Fijase que en este ejemplo generamos el Array con 2 valores.

Salida de consola:
Nombre del perro: Fido, Edad: 4
Nombre del perro: Dido, Edad: 5
Nombre del perro: Rudo, Edad: 10
Links


JUnit - Test Parametrizados - ¿Como Parametrizar un test? - Annotation @Parameters - Parameterized.class JUnit - Test Parametrizados - ¿Como Parametrizar un test? - Annotation @Parameters - Parameterized.class Reviewed by El lado oscuro de java on junio 09, 2014 Rating: 5

No hay comentarios:

Con la tecnología de Blogger.