Ciencia y tecnología

JUnit en 5 minutos


Quizá no sea la gran cosa, pero en breves 5 minutos podemos hacernos una idea de cómo trabajar con JUnit. Esto lo hice con Eclipse.

Paso 1. Escribo mi programa.
Uso de ejemplo un programa que recibe un lista (array) de números enteros y me regresa el mayor de ellos.

public class Largest {
public static int largest(int[] list) {
int index, max = Integer.MIN_VALUE;

if (list.length == 0){
throw new RuntimeException(“Empty list”);
}

for (index = 0; index
if (list[index] > max) {
max = list[index];
}
}
return max;
}
}


Paso 2. Escribo mi test de JUnit

Este es programa representa mis pruebas unitarias. Este va a encargarse de evaluar la clase que escribí anteriormente. Para ello me voy a valer de JUnit.

import junit.framework.*;

public class TestLargest extends TestCase {

public TestLargest(String name){
super(name);
}

public void testSimple(){
assertEquals(9, Largest.largest(new int[] {7,8,9}));
}

public void testOrder(){
assertEquals(9, Largest.largest(new int[] {9,8,7}));
assertEquals(9, Largest.largest(new int[] {7,9,8}));
assertEquals(9, Largest.largest(new int[] {7,8,9}));
}

public void testNegative() {
int [] negList = new int[] {-9, -8, -7};
assertEquals(-7, Largest.largest(negList));
}

public void testEmpty() {
try {
Largest.largest(new int[] {});
fail(“Should have thrown an exception”);
}catch (RuntimeException e) {
assertTrue(true);
}
}
}

Notar que:

  1. Se importan las clases de JUnit
  2. La clase debe extender de TestCase
  3. Se requiere del constructor que recibe un String e invoce al método super
  4. Todos los métodos que inician con test serán ejecutados automáticamente por JUnit


En nuestro ejemplo, cada método hace uso de la método assertEquals que recibe dos parámetros. El primer parámetro indica el valor esperado al ejecutar un método y el segundo el valor real que se obtuvo al ejecutar el método. Sin ambos son iguales la prueba ha sido correcta, si difieren se arrojará una excepción de JUnit indicando que no fue superada la prueba.

Para importar la biblioteca de JUnit en Eclipse hacer lo siguiente:

En el Package Explorer hacer clic derecho en nuestro proyecto (JUnitTest en mi ejemplo) para ver el menú y elegir la opción Properties (Propiedades).

JUnit 1 Adding JUnit package 1


En la ventana que se nos despliega elegir en el menú la opción Java Build Path y luego en esta elegir la pestaña Libraries. Una vez en ella hacemos clic en el botón Add Library…

JUnit 1 Adding JUnit package 2


Se nos abre otra ventana donde seleccionamos la biblioteca JUnit y damos clic en Next (Siguiente)

JUnit 1 Adding JUnit package 3


Se nos muestra otra pantalla donde elegimos la versión de Java, en mi ejemplo usé JUnit 3. Hacemos clic en Finish (Terminar).

JUnit 1 Adding JUnit package 4


¡Listo! En la pantalla de Properties (Propiedades) tenemos ahora desplegada la biblioteca de JUnit 3. Concluimos dando clic en OK.

JUnit 1 Adding JUnit package 5


Compilamos en proyecto.

Paso 3. Ejecuto el test

Estamos listos para correr las pruebas. Nos colocamos en el código de nuestra clase de pruebas TestLargest.java y damos clic derecho para ver el menú. Elegimos la opción Run As… y dentro de ella la opción JUnitTest.

JUnit 2 Running JUnit Test


Esto hará que se ejecuten todos los métodos que hemos definido en nuestra clase de test. Si todos los métodos han arrojado los resultados correctos, Eclipse nos muestra una pestaña con el nombre JUnit con los resultados indicando que las pruebas fueron correctas.

JUnit 3 JUnit test Complete Successfully


En caso de que alguno de los métodos arroje un error se lanza una excepción de JUnit y se nos indica en la pastaña con el nombre JUnit el resultado indicando el o los métodos que no pasaron las pruebas.

JUnit 4 JUnit test Complete Unsuccessfully

El ejemplo de código fue tomado del libro Pragmatic Unit Testing in Java with JUnit de Andrew Hunt y David Thomas

Estándar

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s