martes, 10 de junio de 2014

Como hacer pruebas con JUNIT en Eclipse y MAVEN

En nuestro último artículo creamos un proyecto web con MAVEN en Eclipse. Ahora usando este mismo proyecto, haremos un ejemplo para mostrar en acción las pruebas con JUNIT.

Antes, veamos la estructura del proyecto antes de crear cualquier clase.

pryecto web con maven

Nuestro ejemplo de prueba con JUNIT calculara el área de un cuadrado y un rectángulo. Para esto crearemos 2 clases:
  • Cuadrado.java
  • Rectángulo.java
También en la carpeta "src/test/java", crearemos bajo el mismo nombre de package 2 clases:
  • TestCuadrado.java
  • TestRectángulo.java
Nuestro proyecto queda de la siguiente forma:

junit en eclipse y maven


A continuación el código fuente de las clases:


package com.nj.ejemplo;

public class Cuadrado {

 private int lado;
 
 public Cuadrado(int lado){
  this.lado = lado;
 }
 
 public int getArea(){
  return  (int)Math.pow(this.lado, 2);
  //return lado*lado;
 }
}


package com.nj.ejemplo;

public class Rectangulo {

 private int base;
 private int altura;
 
 public Rectangulo(int base, int altura){
  this.base = base;
  this.altura = altura;
 }
 
 public int getArea(){
  return base*altura;
 }
 
}

El código fuente de nuestras clases tester son:

package com.nj.ejemplo;

import junit.framework.TestCase;

public class TestRectangulo extends TestCase {
  

 public void testArea(){
  Rectangulo objR = new Rectangulo (3,2);
  assertEquals(6, objR.getArea());
 }
}


package com.nj.ejemplo;

import junit.framework.TestCase;

public class TestCuadrado extends TestCase {
 public void testArea(){
  Cuadrado objC = new Cuadrado (5);
  assertEquals(25, objC.getArea());
 }
}

Estas clases tester deben heredar la clase TestCase. También para que nuestra pruebe se ejecute usamos la función assertEquals, que compara 2 variables. Por ejemplo para Cuadrado, nosotros esperamos un 25, y recibimos un entero de la función getArea().

Para probar nuestro ejemplo, podemos hacer click derecho sobre la clase, y "ejecutar como" "Junit Test" (pueden agrandar la imagen)

junit run as


El resultado de esta ejecución es (click en la imagen para agrandar):

junit resultado ejecucion

El resultado es positivo, puesto que 6 es igual a al area de un rectangulo de 3 x 2. ¿Pero que sucede si cambiamos nuestro código de prueba?. Si cambiamos el resultado esperado de la clase TestRectangulo a 7:

package com.nj.ejemplo;

import junit.framework.TestCase;

public class TestRectangulo extends TestCase {
  

 public void testArea(){
  Rectangulo objR = new Rectangulo (3,2);
  assertEquals(7, objR.getArea());
 }
}

Al compilar y ejecutar tenemos (click en la imagen para agrandar):

junit con error de ejecucion

Incluso nos dice porque falla; lo configuramos para esperar un 7, pero llegó un 6.

Espero te haya sido de utilidad este sencillo ejemplo de JUNIT, y si te gusto puedes compartirlo.


No hay comentarios.: