Páginas

17/12/14

Pruebas unitarias JUnit en Eclipse/JBoss Developer Studio. JUnit tutorial.

Test JUnit en Eclipse/JBoss Developer Studio. JUnit tutorial.

Pruebas unitarias JUnit en Eclipse/JBoss Developer Studio. JUnit tutorial.



JUnit Matchers Hamcrest Tutorial. Te presento el poderoso JUnit, para refrescarte un poco la mente te doy un breve concepto del mismo, JUnit es un framework que sirve para hacer pruebas unitarias de nuestras clases, te darás cuenta de que cuando estás haciendo un proyecto, para probar un método de una determinada clase tienes que llamarlo desde el aplicativo o desde otro método y después ver si el resultado que devuelve es el esperado, bueno aquí nace JUnit el cual nos ayuda a ahorrar muchísimo tiempo al implementar una "clase prueba" para nuestras pruebas unitarias. Dicho esto te comento que este pequeño tutorial está hecho con JUnit 4 y el JBoss Developer Studio que básicamente es lo mismo que eclipse, no te asustes si estas utilizando otro IDE, en casi todos los IDE's se trabaja de la misma manera y con este tuto podrías fácilmente aprender a utilizarlo en tu IDE, no tienes que instalar nada nuevo casi todas las últimas versiones de los IDE's traen el plugin de JUnit listo para usar. Comenzando desde 0 te pondre varios ejemplos, algunos nos daran problemas y otros no.

Primer caso crea un proyecto nuevo llamado JUnitDatojava y creas un paquete llamado datojava y dentro de ese paquete una clase llamada DatojavaJUnit en esta clase vamos hacer unos métodos simples de suma y resta solo para hacer la primera prueba de JUnit. Aparte creamos otro paquete en el cual van a ir las clases de pruebas unitarias llamado datojavaTest (esto es una buena práctica de programación para JUnit).

DatojavaJUnit.class
  
package datojava;

public class DatojavaJUnit {

 public int sumar(int num1, int num2) {
  int resultado = num1 + num2;

  return resultado;
 }

 public int restar(int num1, int num2) {
  int resultado = num1 - num2;

  return resultado;
 }
}
Listo una vez que tenemos la clase procedemos a crear la clase para hacer las pruebas unitarias. Nos posicionamos en la clase que acabamos de crear y presionamos el clic derecho New>Other>Java>JUnit>JUnit Test Case.
JUnit Test Case
JUnit Test Case
Ahora solo cambiamos el paquete donde queremos que se creen nuestras clases de prueba y seleccionamos el paquete llamado datojavaTest, todo lo demás lo dejamos por defecto presionamos el botón Next y seleccionamos los métodos que queremos hacerle la prueba unitaria y después presionamos el botón Finish

Test Methods
Test Methods
Ahora nos informa que el JUnit 4 no está agregado a nuestro build path y nos da la opción de agregarlo, presionamos el botón OK
Add JUnit 4
Add JUnit 4
Listo se a creado nuestra clase de prueba unitaria para la clase DatojavaJUnit llamada DatojavaJUnitTest que contiene este código:
DatojavaJUnitTest.class
package datojavaTest;

import static org.junit.Assert.*;

import org.junit.Test;

public class DatojavaJUnitTest {

 @Test
 public void testSumar() {
  fail("Not yet implemented");
 }

 @Test
 public void testRestar() {
  fail("Not yet implemented");
 }

}
    


Como vemos en esta clase ya hemos creado dos métodos que se encargaran de hacer las pruebas unitarias y ver si de verdad nuestros métodos devuelven los resultados esperados. Para hacer algo sencillo en el método testSumar() vamos a llamar al método sumar() y vamos a ver si devuelve el resultado esperado, esto lo hacemos con un assertEquals(), lo que quiere decir esto es que vamos a comparar el resultado devuelto por el método sumar() con un valor que nosotros creemos que debería devolver, de ser cierto la prueba pasara sin ningún problema sino dará error y nos daremos cuenta que el método no funciona como esperamos, por ejemplo, en los métodos vamos a crear estos assertEquals()
DatojavaJUnitTest.class
DatojavaJUnit datojavaJUnit = new DatojavaJUnit();
@Test
public void testSumar() {
 assertEquals(datojavaJUnit.sumar(3, 8), 11);
}
 
@Test
public void testRestar() {
 assertEquals(datojavaJUnit.restar(5, 4), 1);
}
    
Al hacer la prueba unitaria esto es lo que sucede:

JUnit Sucess
JUnit Sucess
La prueba paso con éxito pero ahora en cambio si en el método restar() ponemos esto
@Test
public void testRestar() {
 assertEquals(datojavaJUnit.restar(5, 4), 2);
 // 5 - 4 = 1, eso quiere decir que la prueba debería fallar porque estamos poniendo de 
 // resultado esperado 2 cuando no es correcto
}
    
Al ejecutar la prueba esto es lo que sucede

JUnit Failure
JUnit Failure
Como vimos en la imagen anterior falla, eso quiere decir que nuestro método está bien implementado. Este ejemplo básico está bien para comenzar.

Segundo caso, ya que el ejemplo anterior fue un tiro al suelo!! Tenemos una aplicación muy buena la cual está corriendo en nuestro servidor de aplicaciones JBoss y la misma como es de costumbre hace varias consultas a la base de datos mediante Datasource, ahora la pregunta es, Que pasa cuando estamos tratando de hacer una prueba unitaria de un método que directa o indirectamente hace una consulta a la base de datos?? Se supone que cargamos los Datasources de nuestro aplicativo al arrancar nuestro JBoss pero en este ejemplo estamos haciendo pruebas unitarias de nuestras clases.

No hay comentarios :

Publicar un comentario