Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Java / Ejemplo de Pruebas Unitarias en Java

Ejemplo de Pruebas Unitarias en Java

Autor jc mouse martes, octubre 10, 2017

Una Prueba Unitaria, es una forma de comprobar que nuestro código, hace lo que se supone debe hacer; es decir, se asegura que muestro código no presente fallos, errores, o cálculos inesperados, y que siempre retorne el valor correcto. Cada lenguaje de programación cuenta con sus propias herramientas para realizar estas pruebas, en el caso de java, tenemos a JUnit (creado por Erich Gamma y Kent Beck).

En este post realizaremos un test a un método que estudiamos en un post anterior [Caja blanca: Prueba del camino básico] .

Necesitamos:

  • Netbeans 8.x y Java 8
  • Librería JUnit 4.x (Viene con Netbeans)
  • Librería Hamcrest 1.3 (Viene con Netbeans)
  • Plugin JaCoCoverage

Paso 1: Instalación del Plugin JacoCoverage

JaCoCoverage es  un complemento que funciona como un servicio adicional a JUnit, colorea todos los archivos java según la información de cobertura de las pruebas de unidad. Esto nos permite identificar más fácilmente los caminos en nuestro código que no se cumplen.

Web del plugin: http://plugins.netbeans.org/plugin/48570/tikione-jacocoverage

Para instalar este plugin en Netbeans debemos:

– Abrir el menú -> Herramientas -> plugins. Seleccionar la pestaña Plugins disponibles.

– Buscar y seleccionar TikiOne JaCoCoverage, instalar.

– Nos pedirá reiniciar el IDE, hazlo.

Paso 2: El proyecto

Creamos un proyecto que llamaremos “Prueba de Cobertura”, agregamos un paquete “example” y las librerías arriba mencionadas. Para finalizar, creamos una clase “Miclase.java“.

cobertura ide

Paso 3. El código

El código que probaremos, lo estudiamos en un post anterior [LINK] donde realizamos una prueba manual del algoritmo. El algoritmo corresponde al problema de detectar el numero mayor dados tres números.

algoritmia

Pasamos del algoritmo a código y tenemos:

package example;
/**
 * @see http://www.jc-mouse.net/
 * @author mouse
 */
public class MiClase {

    public int numero_mayor(int a, int b, int c) {
        if (a > b && a > c) {
            return a;
        } else if (c > b) {
            return c;
        } else {
            return b;
        }
    }
    
}

Paso 4: Paquete de Prueba

Ya que tenemos nuestra clase de prueba lista, procedemos a crear las clases de prueba. Clic derecho sobre nuestro proyecto -> New -> Other… En Categoría seleccionamos “Unit Tests” y en File Types, seleccionamos “Test for Existing Class” y presionamos el botón siguiente.

A continuación, presionando el botón “browse…” buscamos y seleccionamos la clase que testearemos, “Miclase“, dejamos todas las opciones tal cual están y finalizamos presionando el botón “Terminar”.

junit

Se creara otra clase en la sección de “Paquete de prueba” como se ve a continuación

package test

Paso 5: JUnit

Antes de realizar la prueba con JUnit, debemos estudiar un poco el código generado. En la parte inferior de la clase MiClaseTest encontramos el siguiente método:

 1     @Test
 2     public void testNumero_mayor() {
 3         System.out.println("numero_mayor");
 4         int a = 0;
 5         int b = 0;
 6         int c = 0;
 7         MiClase instance = new MiClase();
 8         int expResult = 0;
 9         int result = instance.numero_mayor(a, b, c);
10         assertEquals(expResult, result);
11         // TODO review the generated test code and remove the default call to fail.
12         fail("The test case is a prototype.");
13     }

donde:

1) @Test: Los métodos marcados con esta anotación, le indican a JUnit que es código que queremos que se ejecute. Son estos métodos donde se implementan el código de pruebas.

4,5,6) Las variables del método que probaremos

7) Instancia a nuestra de prueba

8) El resultado que esperamos obtener si la prueba tiene exito

9) la llamada al método de prueba, el resultado se almacena en otra variable

10) assertEquals: Es uno de varios métodos con los que cuenta JUnit, este método en particular compara si dos objetos son iguales, de no ser así, lanzará una excepción y la prueba se detiene.

12) fail: Este método hace que la prueba termine con fallo

Como vimos en un post anterior [Caja blanca: Prueba del camino básico], este algoritmo consta de 4 caminos posibles, eso quiere decir que debemos implementar 4 métodos de prueba.

grafos caminos

Partiendo como base el método de prueba arriba mencionado, creamos 4 métodos con sus respectivos valores de entrada y valores esperados, es decir:

    @Test
    public void testNumero_mayor_caso1() {        
        int a = 5;
        int b = 3;
        int c = 7;
        MiClase instance = new MiClase();
        int expResult = 7;
        int result = instance.numero_mayor(a, b, c);
        assertEquals(expResult, result);        
    }

    @Test
    public void testNumero_mayor_caso2() {        
        int a = 5;
        int b = 3;
        int c = 4;
        MiClase instance = new MiClase();
        int expResult = 5;
        int result = instance.numero_mayor(a, b, c);
        assertEquals(expResult, result);        
    }
    
    @Test
    public void testNumero_mayor_caso3() {        
        int a = 5;
        int b = 7;
        int c = 6;
        MiClase instance = new MiClase();
        int expResult = 7;
        int result = instance.numero_mayor(a, b, c);
        assertEquals(expResult, result);        
    }
    
    @Test
    public void testNumero_mayor_caso4() {        
        int a = 5;
        int b = 7;
        int c = 9;
        MiClase instance = new MiClase();
        int expResult = 9;
        int result = instance.numero_mayor(a, b, c);
        assertEquals(expResult, result);        
    }

Para ejecutar el test con JUnit, clic derecho sobre la clase MiClaseTest.java -> run file

Observamos que pasamos las 4 pruebas con éxito.

unity test

Si tuviésemos algún error, este aparecería en color rojo.

Paso 6. JaCoCoverage

Como mencionamos en un principio, este plugin nos permite ver más a detalle lo que pasa con el código y los caminos que este toma. Para ejecutarlo, clic derecho sobre el proyecto -> Test with JaCoCoverage. Se abrirá una pagina en el navegador que tengamos configurado por defecto.

analisis de resultados

En esta pagina, el plugin nos brinda información importante sobre el test realizado, ademas podemos navegar por las diferentes clases que cuenta nuestro proyecto. En nuestro ejemplo pasamos todas las pruebas por lo que el código se colorea de verde.

jacocoverage

Para observar mejor este plugin, provoquemos un error a propósito. Comentemos el método testNumero_mayor3() que corresponde al camino 3 que nos dice que el numero mayor esperado de “a”,”b” y “c”, es “b” . Volvamos a ejecutar el plugin.

epic fail programming

Observamos que ahora marca en rojo el camino que no se cumplió.

enjoy!!!

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Detectar un punto dentro de un polígono HTML5

Detectar un punto dentro de un polígono HTML5

En un ejemplo anterior [Seleccionar y mover shapes en html5] se utilizo un método sencillo para detectar si un punto se...

Añadir Splash Screen en Java/Netbeans

Añadir Splash Screen en Java/Netbeans

¿Splash Screen? El splash screen o traducido al aspañol 😉  es una “Pantalla de bienvenida” que se muestra cu...

Compartir texto plano con un ShareActionProvider en Android

Compartir texto plano con un ShareActionProvider en Android

Un Action Provider es un elemento que habita en la Action Bar para incrementar la accesibilidad de nuestras aplicaciones...

Transacciones – Uso de Commit y Rollback

Transacciones – Uso de Commit y Rollback

Cuando desarrollamos aplicaciones en java con base de datos debemos tener cuidado en que se cumplan un conjunto de carac...

Crea un TextBox estilo Metro para java

Crea un TextBox estilo Metro para java

En este tutorial personalizaremos un JTextField java para darle la apariencia de un TextBox de Windows Metro. El TextBox...

Tomar fotos con la camara y guardar en la sdcard

Tomar fotos con la camara y guardar en la sdcard

En este post realizaremos una aplicación android que hará uso de la cámara del celular para tomar una foto y guardarla e...

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

Comparte lo que sabes

Categorias

Últimas entradas

Una Prueba Unitaria, es una forma de comprobar que nuestro código, hace lo que se supone debe hacer; es decir, se asegur...

La prueba del camino básico, es una prueba de “caja blanca” que consiste en verificar el código de nuestros...

Si quieres cambiar el nombre de tus atributos sin tener que reescribir código java por X o Y razón, GSON te permite reno...

Un JList nos permite almacenar objetos en una lista y mostrarlos gráficamente en una serie vertical en el cual el usuari...

Android Bolivia

Bandera en Alto