JUnit

JUnit


Introducción
JUnit es un framework(entorno de trabajo​ o marco de trabajo​ es un conjunto estandarizado de conceptos, prácticas y criterios para enfocar un tipo de problemática particular) 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. También sirve como herramienta para realizar las pruebas de regresión, que realizaremos cuando una parte del código ha sido modificada y sea necesario comprobar que se sigue cumpliendo con todos los requisitos

Desarrollo

¿Cómo funciona?
JUnit es un conjunto de clases (framework) 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 con la especificación, entonces JUnit devolverá que el método de la clase pasó exitosamente la prueba; en caso de que el valor esperado sea diferente al que regresó el método durante la ejecución, JUnit devolverá un fallo en el método correspondiente. JUnit es también un medio de controlar las pruebas de regresión, necesarias cuando una parte del código ha sido modificado y se desea ver que el nuevo código cumple con los requerimientos anteriores y que no se ha alterado su funcionalidad después de la nueva modificación. El propio framework incluye formas de ver los resultados (runners) que pueden ser en modo texto, gráfico (AWT o Swing) o como tarea en Ant.

Diseño de JUnit
JUnit está diseñado alrededor de dos patrones de diseño principales: el patrón Command y el patrón Composite. Un TestCase es un objeto Command. Cualquier clase que contenga métodos de testeo debería extender la clase TestCase. Un TestCase puede definir cualquier número de métodos públicos testXXX(). Cuando quieres comprobar el resultado esperado y el real, invocas una variante del método assert(). Las subclases de TestCase que contienen varios métodos testXXX() pueden utilizar los métodos setUp() y tearDown() para inicializar y liberar cualquier objeto común que se vaya a testear, conocido como la "instalación" (material) del test. Cada método de tests se ejecuta sobre su propia instalación, llamando a setUp() antes y a tearDown() después de cada método para asegurarse de que no hay efectos colaterales entre ejecuciones de tests. Los ejemplares de TestCase pueden unirse en árboles de TestSuite que invocan automáticamente todos los métodos testXXX() definidos en cada ejemplar de TestCase. Un TestSuite es una composición de otros tests, bien ejemplares de TestCase u otros ejemplares de TestSuite. El comportamiento compuesto exhibido por TestSuite te permite ensamblar suites de tests de suites de tests, de una profundidad arbitraria, y ejecutar todos los tests automáticamente para obtener un simple estado de pasado o fallado.

Conclusión

Ahora sabemos que JUnit tiene una gran importacia, ya que es usado como marco por muchas otras herramientas de soporte a las pruebas unitarias; por ejemplo, herramientas de cubrimiento, de mutantes y de data-driven. Al momento de hacer pruebas unitarias no hay que cerrarnos a una opción, tambien existe TestNG que agrega almenos tres funcionalidades que no están presentes en JUnit como lo son pasar objetos de java como parámentos de los casos de prueba a través del soporte a las pruebas que utilizan el enfoque data-driven, Definir grupos de prueba, además de que permite definir la dependencia entre pruebas, sin embargo, si podemos combinar estos dos Framework podremos estar seguros de que podremos reduccir nuestro numero de fallas dentro de nuestro sistema.

Bibliografía
- https://es.slideshare.net/ikercanarias/introduccin-a-junit
- http://programacion.net/articulo/primeros_pasos_con_junit_265

Comentarios

Entradas más populares de este blog

Mapa conceptual "Métricas de calidad"

Sistemas Distribuidos (Ensayo)

Cifrado Hash