viernes, 23 de mayo de 2008

TestNG: causas, efectos, consecuencias, beneficios

A través de TestNG se pueden realizar pruebas para comprobar el perfecto funcionamiento de las clases, métodos de clases, etc. que creemos en un proyecto.

Realizando una prueba antes de implementar el código, buscamos que el código de la prueba falle para que, una vez realizada la implementación, si el resultado es positivo, indique que el bloque de código de nuestro proyecto es correcto.

La idea de la prueba es realizarla paso a paso e ir probando para así ir determinando que cada instrucción se está desarrollando de manera correcta.

Una prueba se realiza a través de un método dentro de una clase denominada como la clase que vamos a comprobar (MiClaseTest). El método debe ir precedido de la anotación "@Test" que indica que es un método al que hay que realizar prueba. También se emplean las anotaciones @BeforeTest o @BeforeMethod para inicializar los valores cada vez que realicemos una prueba en cada uno de los métodos; del mismo modo se emplea @AfterTest o @AfterMethod para limpiar los recursos empleados en los métodos de prueba.

Un ejemplo de código sería el siguiente:

public class MiClaseTest{

@BeforeTest
public void inicializarRecursos(){
...
}

@After
public void limpiarRecursos(){
...
}

@Test
pruebaTest(){
...
}

}

Se pueden crear tantos Tests dentro de la clase Test como deseemos. La estructura de estos métodos es la siguiente:
  • El escenario de pruebas, donde se declaran (si no se ha hecho antes en @BeforeTest) los objetos a emplear en el método.
  • La invocación, donde se implementa el objeto declarado en el escenario de pruebas con un método que será definido en la clase.
  • Confirmación de resultados: a través de la instrucción Assert (que contiene una expresión booleana) verificamos que los resultados de la invocación sean verdaderos o falsos.
Ejemplo:

@Test
public void pruebaAddProducto(){

//Escenario de pruebas:
Producto producto = new Producto();

//Invocación:
producto.AddProducto(producto);

//Confirmación de resultados:
assert(producto.productos.size()==1);
assert(ptoducto.productos.contais(producto));
}

Ejemplo completo de clase Test: CarritoCompraTest.java.

3 comentarios:

Juan Antonio Ruz dijo...

"@Test" esto es una anotación y no un comando

¿algo sobre escenario de pruebas, invocación, asserts....?

está bastante bien el resto! aunque iremos puliendo detalles
PD: un enlace a repo con ejemplo?

rafakatu dijo...

he hecho un par de correcciones y lo he completado

Juan Antonio Ruz dijo...

va muy bien!