Title: Pruebas unitarias con JUNIT
1Pruebas unitarias con JUNIT
2Pruebas Unitarias
Qué son las pruebas unitarias?
Aseguran que un método particular de una clase
realiza exitosamente un conjunto de tareas.
Una prueba unitaria es una pieza de código
escrita por un desarrollador que ejercita un muy
pequeña y específica área de funcionalidad del
código desarrollado.
3Pruebas Unitarias
Por qué escribir pruebas?
- Reducir los bugs en nuevas funcionalidades.
- Reducir los bugs en las funcionalidades
existentes. - Hacer pruebas nos ayuda a pensar.
- Las pruebas son buena documentación.
- Ayudan a mejorar el diseño.
Pero estamos muy ocupados!
4Pruebas Unitarias
JUnit Una pequeña ayuda
Necesito escribir unas pocas líneas de código,
ejecutar la prueba y que corra, o mejor aún que
no corra, entonces escribo el código que la haga
correr
JUnit es la solución!
5Pruebas Unitarias
JUnit Ejemplo Encontrar el número mayor
package cl.developer public class NumberUtils
public int encontrarMayor(int arreglo)
int mayor Integer.MAX_VALUE
for(int i 0 i lt arreglo.length i)
if (arregloi gt mayor)
mayor arregloi
return mayor
package cl.developer import junit.framework.Test
Case public class TestNumberUtils extends
TestCase public void testMayor()
NumberUtils utils new NumberUtils()
int res utils.encontrarMayor(new int 2,3)
assertEquals(3, res)
6Pruebas Unitarias
JUnit Qué pasa en el mundo real?
Servicios o recursosremotos
TestCase
Código bajo prueba
Sistema de Archivos
Sistemas deBasesde Datos
7Pruebas Unitarias
JUnit Qué pasa en el mundo real?
TestCase
Código bajoprueba
EJB
Los errores y fallas podrían no estar
relacionados con el código bajo prueba
Código no relevante para la prueba
8Pruebas Unitarias
JUnit Mock Objects (Imitadores)
ClassA
RecursoExterno
Class B
Unit test
RecursoExterno
Class
Créeme! Soy B
9Pruebas Unitarias
JUnit Mock Objects (Aislamiento)
ClassA
RecursoExterno
ClassB
Unit test
RecursoExterno
Class
10Pruebas Unitarias
JUnit Mock Objects (Pruebas de integración)
ClassA
RecursoExterno
Class B
Unit test
RecursoExterno
Class
11Pruebas Unitarias
JUnit Ejemplo Mock
class TestCache extends MockTestCase public
void testMock() Mock reader
mock(DataReader.class)
reader.expects(once()).method(readData).will(ret
urnValue(ltdatogt)) Cache cache new
Cache((DataReader) reader.proxy())
String valor cache.getParametro(CL)
assertEquals(Chile, valor)
12Pruebas Unitarias
JUnit Struts?Más problemas?
En ocasiones necesitamos imitar comportamientos
mas complejos. Imitar Struts requiere demasiado
esfuerzo.
forward
response
session
mapping
request
13Pruebas Unitarias
JUnit Struts?
En ocasiones necesitamos imitar comportamientos
mas complejos. Imitar Struts requiere demasiado
esfuerzo.
Estamos de suerteAlguien ya lo hizo por
nosotros!
StrutsTestCase
14Pruebas Unitarias
JUnit StrutsTestCase
StrutsTestCase es una simulación de Struts.
Provee un mock de struts que puede correr
fuera de un contenedor de servlets
class TestMonetario extends MockStrutsTestCase
public void testPago()
setRequestPathInfo("/tcreditoonline",
"/pagoNacionalAction.do")
addRequestParameter("method", "realizar")
addRequestParameter("objeto", "134604085")
addRequestParameter("cuentaCte",
"134604085") addRequestParameter("tipoCue
nta", "CCT") addRequestParameter("monto",
"5000") actionPerform()
verifyForward("error") assertEquals("No
existe tarjeta.", (String) getRequest().getAttribu
te("errorMsg"))
15Pruebas Unitarias
JUnit Uniendo todo
Ejemplo Pago Full TDC Monetario (Nos vamos al
código)
16(No Transcript)
17Pruebas Unitarias
JUnit Fin
Preguntas?
18Pruebas Unitarias
Y como no, el Bonus Track
Próximos desafíos?
Test Driven Development
Pruebas Unitarias
Test First Design
Refactoring
19Pruebas Unitarias
Ahora sí
Fin.