Lunes, 14 Julio 2014 19:41

Pruebas Unitarias con JUnit en Netbeans

Escrito por 
Valora este artículo
(0 votos)

Dentro de las distintas fases del desarrollo de software, además de los requerimientos, diseño, desarrollo etc.,  una de las más importantes es la fase de pruebas, en esta se comp rueba si nuestro código desarrollado realmente esta haciendo con lo que se especifico, por otra parte  acá en donde se verifica que el proyecto cumpla con los requerimientos que fueron especificados por el cliente en la fase de analisis. Existen varios tipos de pruebas, sin embargo, algunas de las más básicas que existen son las pruebas unitarias que prueban los distintos módulos que conforman el proyecto y que son el inicio para la correcta realización de los demas tipos de pruebas, en nuestro caso son las pruebas  realizadas sobre cada clase desarrollada analizando cada uno de  los métodos de la misma.

Para las distintas pruebas que se pueden realizar, existen distintas herramientas y en específico para las pruebas unitarias existe Junit, que es un framework para realizarlas sobre codigo Java, que es una derivación de XUnit que existe tanto para php como para .NET. Este tipo de herramientas hacen que el esfuerzo y el trabajo en la fase de pruebas se reduzca, permitiendo que el desarrollador o tester se centre en la verificación de resultados correctos y no escribiendo código extenso para realizar sus pruebas.

Por otro lado podemos decir que  un framework o conjunto de librerias, que se utilizan en las aplicaciones escritas en lenguaje java las cuales puden ser testeadas apartir de pruebas unitarias con la ayuda de este framework  la cual proporciona clases de las cuales se pueden heredar para formar las nuevas clases que  seran las que realizen las pruebas unitarias ha cada una de las clases que conformen nuestra  aplicacion o proyecto, una prueba puede estar conformada por una serie de datos, utilizacion y resultados, este ultimo se compara con los datos que en realidad deberia de mostrar el software para tener un conocimiento si nuestra aplicacion esta cumpliendo con hacer lo solicitado..

Que es un Assert en JUint?

Es una clase del paquete junit.framework la cual nos proporciona un conjunto de metodos los cuales son lo que realmente hacen la prueba si un metodo especifico de nuestra clase esta hacen las cosas correctamente como deberia, y el funcionamiento de estos metodos no es complicada simplemente si la condicion da algun tipo de error entonces la prueba no cumple con lo solicitado es decir que se genero un error en la prueba unitaria.Osea los siguientes asserts lo utilizamos para verificar resultados que ya sonocemos de antemano con los que nos devuelve un método de una clase por ejemplo.
A continuacion una lista de las pruebas que nos proporciona Assert:


assertArrayEquals ( byte[] esperado, byte[] real )
Afirma que dos matrices de bytes son iguales.

assertArrayEquals ( char[] esperado, char[] real )
Afirma que dos conjuntos de caracteres son iguales.

assertArrayEquals ( int[] esperado, int[] real )
Afirma que dos matrices son iguales int.

assertArrayEquals ( long[] esperado, long[] real )
Afirma que dos matrices son iguales largo.

assertArrayEquals ( Object[] esperado, Object[] real )
Afirma que dos conjuntos de objetos son iguales.

assertArrayEquals ( short[] esperado, short[] real )
Afirma que dos breves conjuntos son iguales.

assertArrayEquals (String mensaje, byte[] esperado, byte[] real)
Afirma que dos matrices de bytes son iguales.

assertArrayEquals ( String mensaje, char[] esperado, char[] real )
Afirma que dos conjuntos de caracteres son iguales.

assertArrayEquals ( String mensaje, int[] esperado, int[] real)
Afirma que dos matrices son iguales int.

assertArrayEquals ( String mensaje, long[] esperado, long[] real )
Afirma que dos matrices son iguales largo.

assertArrayEquals ( String mensaje, Object[] esperado, Object[] real)
Afirma que dos conjuntos de objetos son iguales.

assertArrayEquals ( String mensaje, short[] esperado, short[] real )
Afirma que dos breves conjuntos son iguales.

assertEquals (double esperado, double real, double delta)
Afirma que dos doubles o float son iguales dentro de un delta.

assertEquals ( long esperado, long real )
Asserts that two longs are equal. Afirma que dos largos son iguales.

assertEquals (Object esperado, Object real )
Afirma que dos objetos son iguales.

assertEquals (String mensaje, double esperado, double real, double delta)
Afirma que dos doubles o float son iguales dentro de un delta.

assertEquals ( String mensaje, long esperado, long real )
Afirma que dos long son iguales.

assertEquals ( String message, Object expected, Object actual )
Afirma que dos objetos son iguales.

assertFalse ( boolean condicion )
Afirma que una condición es falsa.

assertFalse (String mensaje, boolean condicion)
Afirma que una condición es falsa.

assertNotNull (Object objeto)
Afirma que un objeto no es nulo.

assertNotNull (String mensaje, Object objeto)
Afirma que un objeto no es nulo.

assertNotSame (Object noEsperado, Object real)
Afirma que dos objetos no se refieren al mismo objeto.

assertNotSame (String mensaje, Object noEsperado, Object real)
Afirma que dos objetos no se refieren al mismo objeto.

assertNull (Object objeto)
Afirma que un objeto es nulo.

assertNull ( String mensaje, Object objeto)
Afirma que un objeto es nulo.

assertSame (Object esperado, Object real)
Afirma que dos objetos se refieren al mismo objeto.

assertSame (String mensaje, Object esperado, Object real)                                                                                                                                                                                                                                Afirma que dos objetos se refieren al mismo objeto.

assertTrue (boolean condicion)                                                                                                                                                                                                                                                                                   Afirma que una condición es verdadera.

assertTrue (String mensaje, boolean condicion)                                                                                                                                                                                                                                             Afirma que una condición es verdadera.

fail () Falla una prueba y sin mensaje.
fail (String message) Falla una prueba con un mensaje dado.

A continuación veremos como crear pruebas unitarias de manera sencilla con Netbeans 6.8.
Si alguna vez creamos un proyecto en Netbeans abremos observado que en el árbol de proyecto existe un directorio llamado Paquetes de Prueba, en estos se ubican nuestras clases derivadas de  TestCase, la cual nos sirve para realizar nuestras pruebas unitarias.
Creamos un proyecto en Netbeans


Elegimos aplicación java

Le damos un nombre, en mi caso “Prueba” y terminamos.


Creamos una clase “Operacion”


Le agregamos 2 metodos “sumar” y ”restar”, que simplemente nos realiza tales operaciones
 

  public double suma(double a, double b){
    return a+b;
  }
public double resta(double a, double b){
    return a-b;
  }



Nuestra clase nos queda de la siguiente manera


Bien a continuación crearemos las clases que nos servirán de prueba para nuestros métodos, para ello seleccionamos nuestra clase->Herramientas->Crea prueba Junit


Nos aparece la siguiente  ventana elegimos la versión Junit 4.x


En la siguiente ventana destildamos la opción  Probar inicializador y finalizador (que para este caso no la utilizaremos) y le damos click en aceptar



Si extendemos el nodo de  nuestro proyecto veremos que tenemos creada nuestra clase de prueba “OperacionTest”, la cual nos servirá para probar directamente los métodos de nuestra clases “Operación”.



Y en la misma tenemos creado nuestro métodos que nos servirán de prueba “testResta” y “testSuma”  como lo muestra la imagen

 


En los dos métodos podemos notar que podemos inicializar las variables a y b, que son las varibles que se sumaran en este método de nuestra clase “Operacion”.
También tenemos una instancia de de nuestra clase “Operación”
Contamos con la variable “expResult”, la cual será inicializada con  el resultado de la suma que nosotros conocemos de antemano.


Cambiamos los valores de las variables
a=2.0
b=3.0
expResult=5.0


comentamos la línea no la  vamos a nesecitar

//fail("The test case is a prototype.");

Con el metodo de la resta hacemos prácticamente lo mismo, pero con valores distintos

a=5.0
b=3.0
expResult=2.0


comentamos la línea que no la  vamos a nesecitar

//fail("The test case is a prototype.");

Nuestra clase de prueba nos queda de la siguiente manera




Ahora no nos queda otra cosa que ejecutar nuestro archivo de prueba de la siguiente manera, click derecho sobre el archivo->ejecutar



Nos arroja los siguiente salida

Vemos que la prueba fue exitosa

Ahora supongamos que el valor del método “suma”  con los valores de

a=5.0
b=3.0

el resultado para la suma (que en la realidad no es asi) tendría que ser

expResult=15.0

nos queda entonces asi nuesro metodo "suma " de la clase de prueba



ejecutamos nuestro archivo de prueba  y nos arroja la siguiente salida en la que observamos que el método testSuma nos arroja un error por que no coinciden los resultados.

 

Eso es todo por ahora espero que haya servido como una simple introducción a Junit, para realizar pruebas unitarias en la estapa del testeo durante el proyecto de desarrollo de software. Hasta pronto!!! 

 

Visto 1051 veces

Deja un comentario

Asegúrate de llenar la información requerida marcada con (*). No está permitido el código HTML. Tu dirección de correo NO será publicada.