4
PRUEBAS UNITARIAS CON JUNIT EN ECLIPSE JUnit es un “framework” para automatizar las pruebas unitarias de aplicaciones Java. Se utiliza en la fase de desarrollo, su utilización por parte de los desarrolladores permite la creación de software de mayor calidad. JUnit es un conjunto de clases que permite realizar la ejecución de clases Java de manera controlada, para poder evaluar si el funcionamiento de cada uno de los métodos de la clase se comporta como se espera. Es decir, en función de algún valor de entrada se evalúa el valor de retorno esperado, si la clase cumple la especificación, entonces JUnit devolverá que el método de la clase pasó exitosamente la preuba. En caso de que el valor esperado sea diferente al retornado por el método durante la ejecución, Juni devolverá un fallo en el método correspondiente. JUnit es tambien un medio para controlar las prueba de regresión, necesarias cuando una parte del código ha sido modificado y se desea ver que el nuevo código cumple los requisitos anteriores y que no se ha alterado su funcionalidad después de la nueva modificación. Este framework se encuentra en el momento de escribir el post en la versión 4.5, con algunas mejoras: Incluye soporte para anotaciones (Java 5 Annotations). Permite timeouts en los test. Configurar excepciones esperadas. Ordenación, priorización, categorización y filtrado de tests. Más tipos de aserciones (ej: assertEquals(Object[], Object[]). Se elimina la distinción entre errores (errors) y fallos (failures). 2. INSTALACIÓN DE JUNIT EN ECLIPSE 3. EJEMPLO Crear un Test Crearemos el primer test con la ayuda de la herramienta JUnit en el IDE Eclipse. Se asume que ya tiene instalada una versión reciente de este producto, pero si no es así, siempre puede descargarla desde su site oficial. Las últimas versiones de Eclipse ya traen incorporado el Plug-in de JUnit, pero si su versión es anterior, tendrá que descargar e instalar JUnit desde su site oficial. Para crear un proyecto Java: Arranque Eclipse.

Pruebas Unitarias Con Junit en Eclipse

Embed Size (px)

Citation preview

Page 1: Pruebas Unitarias Con Junit en Eclipse

PRUEBAS UNITARIAS CON JUNIT EN ECLIPSE

JUnit es un “framework” para automatizar las pruebas unitarias de aplicaciones Java. Se utiliza en la fase de desarrollo, su utilización por parte de los desarrolladores permite la creación de software de mayor calidad.

JUnit es un conjunto de clases que permite realizar la ejecución de clases Java de manera controlada, para poder evaluar si el funcionamiento de cada uno de los métodos de la clase se comporta como se espera.

Es decir, en función de algún valor de entrada se evalúa el valor de retorno esperado, si la clase cumple la especificación, entonces JUnit devolverá que el método de la clase pasó exitosamente la preuba. En caso de que el valor esperado sea diferente al retornado por el método durante la ejecución, Juni devolverá un fallo en el método correspondiente.

JUnit es tambien un medio para controlar las prueba de regresión, necesarias cuando una parte del código ha sido modificado y se desea ver que el nuevo código cumple los requisitos anteriores y que no se ha alterado su funcionalidad después de la nueva modificación.

Este framework se encuentra en el momento de escribir el post en la versión 4.5, con algunas mejoras:

Incluye soporte para anotaciones (Java 5 Annotations). Permite timeouts en los test. Configurar excepciones esperadas. Ordenación, priorización, categorización y filtrado de tests. Más tipos de aserciones (ej: assertEquals(Object[], Object[]). Se elimina la distinción entre errores (errors) y fallos (failures). …

2. INSTALACIÓN DE JUNIT EN ECLIPSE

3. EJEMPLO

Crear un Test

Crearemos el primer test con la ayuda de la herramienta JUnit en el IDE Eclipse. Se asume que ya tiene instalada una versión reciente de este producto, pero si no es así, siempre puede descargarla desde su site oficial. Las últimas versiones de Eclipse ya traen incorporado el Plug-in de JUnit, pero si su versión es anterior, tendrá que descargar e instalar JUnit desde su site oficial.

Para crear un proyecto Java:

Arranque Eclipse.

Page 2: Pruebas Unitarias Con Junit en Eclipse

Pulse File -> New -> Project, luego elija Java y pulse Next. En el wizard que aparece escriba ProjectWithJUnit como nombre del

proyecto: Pulse sobre Finish. Y se generará el nuevo proyecto en el IDE:

Ya está listo para empezar a desarrollar el ejemplo "Hello World". Siga las reglas de TDD y cree el test incluso antes de tener ningún código. Con el objetivo de tener algo por donde empezar, asumiremos que la futura clase se llamará HelloWorld y que tendrá un método say(), que devolverá algún valor String ("Hello World," por ejemplo).

Para crear dicho test, pulse con el botón derecho sobre el proyecto ProjectWithJUnit en la ventana del Package Explorer y seleccione New -> JUnit Test Case; Eclipse detectará que no hemos incluido en el classpath del proyecto la librería de JUnit y pedirá confirmación para hacerlo

Dígale que si y aparecerá el wizard para crear la nueva clase. Escriba com.tests como el nombre del paquete donde va a residir la

clase y como nombre de la clase de test (Test case) puede utilizar TestThatWeGetHelloWorldPrompt (si, ya lo se, es demasiado largo, pero indica claramente lo que hacer, ¿no?):

Pulse Finish y Eclipse se encargará de crear la nueva clase:

Ahora le toca añadir código a la clase para que se parezca a esto:

import junit.framework.TestCase;

public class TestThatWeGetHelloWorldPrompt

extends TestCase {

public TestThatWeGetHelloWorldPrompt(

String name) {

super(name);

}

public void testSay() {

HelloWorld hi = new HelloWorld();

assertEquals("Hello World!", hi.say());

}

public static void main(String[] args) {

junit.textui.TestRunner.run(

TestThatWeGetHelloWorldPrompt.class);

}

}

El código de la clase no es muy complejo; sólo es un poco inusual. Sin embargo, vamos a examinarlo en detalle. Extiende la clase TestCase de JUnit, que se define en el Javadoc de JUnit como "una instalación para ejecutar múltiples tests". JUnit también tiene TestSuite, que es un conjunto de clases de tests relacionadas, pero no lo cubriremos en este artículo.

Para crear el sencillo test, necesita seguir estos pasos:

Page 3: Pruebas Unitarias Con Junit en Eclipse

1. Cree un ejemplar de junit.framework.TestCase. 2. Defina tests que no devuelvan nada (void) cuyos nombres empiecen con

el string "test" (como testWasTransactionSuccessful(), testShow(), etc.).

TestThatWeGetHelloWorldPrompt.java cumple estos dos criterios: es una subclase de TestCase y tiene un método llamado testSay(). Este método utiliza una llamada a assertEquals(), que compara el valor que esperamos recibir con el valor devuelto por el método say().

El método main() se utiliza para ejecutar el test y presentar su salida. El método TestRunner proporciona salidas tanto gráficas como de texto. Utilizamos la salida de texto porque es la que soporta Eclipse y es la adecuada para nosotros. Una vez ejecutados, la versión de texto de los tests mostrarán sus resultados y Eclipse utilizará esa salida de texto para crear su propia representación gráfica.

Bueno, según la metodología de TDD, tiene que ejecutar el test para ver que es lo que falla.

Seleccion la clase TestThatWeGetHelloWorldPrompt.java y en el menú elija Run -> Run as -> JUnit Test

Una vez ejecutada cambiará el aspecto de la vista de la pantalla y en la parte izquierda de la pantalla verá la ventana de JUnit en lugar del Package Explorer. La venta de JUnit mostrará una barra roja indicando que el test no se ha pasado con éxito, y abajo podrá ver los detalles de esos fallos:

Perfecto! Realmente ha fallado. Ahora podemos crear el código que funcione en nuestro proyecto:

Puls con el botón derecho en el título ProjectWithJUnit en la ventana del Package Explorer, luego elija, New -> Class.

En el wizard que aparece escriba com.tests como el nombre del paquete para esta clase y HelloWorld como nombre de la clase. No marque ninguno de los checkboxes que hay en el wizard.

Pulse Finish y teclee el siguiente código dentro de la clase HelloWorld:

public String say() { return("Hello World!"); }

Es muy simple y no hace falta ningún comentario. Ejecutemos el test de nuevo para ver los resultados.

Ejecute el test de la forma que se vió arriba (recuerde seleccionar primero la clase TestThatWeGetHelloWorldPrompt.java en el Package Explorer.

Funciona! Hemos pasado el test y Eclipse nos lo indica mostrando una barra verde en la ventana de JUnit:

Page 4: Pruebas Unitarias Con Junit en Eclipse

Ahora vamos a hacer que falle de nuevo, pero por una razón diferente. Esto nos ayudará a descubrir cómo JUnit cubre e informa de los diferentes tipos de errores. Edite la sentencia assertEquals("Hello World!", hi.say()); y escriba assertEquals("Hello Me!", hi.say());. Con esto se cambia el valor de retorno esperado. Si se ejecuta este test de nuevo, la barra de la ventana de JUnit será otra vez roja, y en la parte inferior de la ventana de JUnit mostrará una explicación de lo que está fallando:

Conclusiones

JUnit es una herramienta Open Source para la realización de test unitarios en la fase de desarrollo para el entorno Java.

Es la herramienta de test más utilizada en entornos Java, lo suficientemente madura para su implantación en entornos comerciales y con un coste cero.

Por todo ello, los principales IDEs de desarrollo (Eclipse, NetBeans, RAD, etc) incorporan plugins para su utilización.