Betapor Pruebas en
Detalle
Mocking
www.iwt2.org
formacion@iwt2.org
03. Mocking
• Aprender qué es el
mocking y para qué
sirve.
• Desarrollar el tipo de
pruebas en las que es
necesario un mock.
• Conocer librerías ya
existentes para facilitar
el desarrollo de
mockings
Objetivos
2
Mocking
Índice
3
Todos los Conceptos
que Necesitas
Saber sobre
Mocking
4
Todo sobre los Mocks
Descontar
Todo sobre Mocks
8
Todo sobre Mocks
Glosario
Objetos que devuelven valores
Stub predefinidos al llamar a sus métodos.
Objeto que necesita el código bajo prueba
Dummy pero que nunca será utilizado
Objeto que implementa un atajo y o es
Fake válido para producción.
Objetos que indican las llamadas que han
Spy
recibido sus métodos.
9
Todo sobre Mocks
Glosario
Este término se utiliza de manera más
Double
genérica que el término mock.
Por ejemplo:
• Un stub de represente un acceso a una BDDD
sería un objeto que siempre devolverá valores
prefijados
• Un fake será un objeto que guarda los valores en
un map (por ejemplo)
Todo sobre Mocks
https://developers.google.com/appengine/docs/java/tools/localunittesting
http://developer.android.com/tools/testing/index.html
Librerías de mocking
12
Librerías de Mocking
En Java
http://code.google.com/p/mockito/
http://www.jmock.org/index.html
Puedes elegir.
Ejemplo con Mockito
14
Ejemplo con Mockito
19
Ejemplo con jMock
• A continuación vamos a
ver el mismo ejemplo
que hicimos con
Mockito.
• Los pasos a dar serán
los mismos pero los
implementaremos de
manera distinta
utilizando jMock.
Ejemplo con jMock
3. Creamos el objeto de la
clase bajo prueba e
invocamos el método bajo
prueba.
4. Verificamos que todo el
comportamiento indicado
en el context se ha
cumplido
Ejemplo con jMock
• Nota técnica.
– JMock trae sus propias librerías Harmcrest las
cuáles pueden causar conflicto con Junit 4.
– Si al trabajar con jMock obtienes un mensaje de
error como el del cuadro e abajo, modifica tu
build path para que Junit se cargue en último
lugar o bien haz las pruebas en Junit 3.
java.lang.SecurityException: class "org.hamcrest.TypeSafeMatcher"'s signer information does not match signer
information of other classes in the same package
at java.lang.ClassLoader.checkCerts(Unknown Source)….
Ejemplo con jMock
29
Librerías de Mocking
Ejercicios adicionales.
30