Upload
alberto-vilches
View
1.990
Download
3
Embed Size (px)
DESCRIPTION
Charla para la XPWeek el 23 de Septiembre de 2011
Citation preview
TESTING Y TDD CON GROOVY Y GRAILS
por Alberto Vilches http://albertovilches.com
Twitter: @albertovilches
SOBRE MI
Pasado • Trabajando en desarrollo desde 1998 • Programador en Clipper y Delphi • Programador en Java y J2EE desde 2001 • Instructor y consultor de Bea • Administrador de sistemas en Aena Presente • Programador freelance en Grails y Flex • Partner de Escuela de Groovy • Evangelizador Groovy y Grails • Fundador de la conferencia Greach
AGENDA
• Introducción a Groovy • Testing con Groovy
• Introducción a Grails • Testing con Grails
¿QUÉ ES GROOVY?
• Groovy es Java • Dinámico • Inspirado en Ruby, Python y Smalltalk • OOP puro • Closures, Gstrings, Builders, DSL
¿QUÉ ES GROOVY?
• Groovy es Java. • Dinámico • Inspirado en Ruby, Python y Smalltalk • OOP puro • Closures, Gstrings, Builders, DSL • No compile type-checking • Ligeramente más lento que Java
TESTING CON GROOVY
• Power Asserts
• GroovyTestCase
• Mocking • Closure as OnlyOneMethodInterface • Map as Interface • Expando • mockFor / stubFor
GROOVY POWER ASSERTS
GROOVY TEST CASE
• Añade nuevos assert*
• Y algunos métodos como shouldFail o notImplementedYet
• Nombres de métodos largos
MOCKING CON GROOVY
Closure as OnlyMethodInterface
MOCKING CON GROOVY
Map as Interface
MOCKING CON GROOVY
Expando
MOCKING CON GROOVY
a
MOCKING CON GROOVY
a
MOCKING CON GROOVY
a
MOCKING CON GROOVY
a
GRAILS
• Introducción a Grails • Estructura de un proyecto • Artefactos
• Controladores • Objetos de dominio • Servicios
• Testing
¿QUÉ ES GRAILS?
• Groovy sobre Spring • RAD en Java. Stack, no framework • CoC -> No XML • MVC (binding, i18n, validation) + persistencia • Servidor (Tomcat) y bbdd (HSQL) embebidos • Cambios en caliente, Genera WAR. • Extensible: plugins
TESTING GRAILS
• Dinámico: código sensible vs fácil de testear • Mocks
• JUNIT • Pruebas unitarias • Pruebas de integración • Pruebas funcionales:
• Plugin: Selenium, Geb, Canoo Webtest
• Spock, GSpec, GMock
ESTRUCTURA DEL PROYECTO
VISIÓN GENERAL
CONTROLADORES
Uso directo
Inyección Spring
VISIÓN GENERAL
CONTROLADORES
VISTAS
Uso directo
Inyección Spring
VISIÓN GENERAL
CONTROLADORES
VISTAS
TAGLIBS
Uso directo
Inyección Spring
VISIÓN GENERAL
CONTROLADORES
SERVICIOS
VISTAS
TAGLIBS
Uso directo
Inyección Spring
VISIÓN GENERAL
CONTROLADORES
SERVICIOS
VISTAS
TAGLIBS
Uso directo
Inyección Spring
VISIÓN GENERAL
CONTROLADORES
SERVICIOS
VISTAS
CLASES DE DOMINIO
TAGLIBS
Uso directo
Inyección Spring
VISIÓN GENERAL
CONTROLADORES
SERVICIOS
VISTAS
CLASES DE DOMINIO
TAGLIBS
Uso directo
Inyección Spring
MVC: CONTROLADORES
MVC: CONTROLADORES
MVC: CONTROLADORES
MVC: CONTROLADORES
params session request response …
MODELO DE DATOS: GORM
MODELO DE DATOS: GORM
MODELO DE DATOS: GORM
MODELO DE DATOS: GORM
MODELO DE DATOS: GORM
Genero 1 * Película
SERVICIOS
SERVICIOS
SERVICIOS
SERVICIOS
SERVICIOS
SERVICIOS
SERVICIOS
singleton prototype request session
CONTROLLER TESTS
• a
CONTROLLER TESTS
• a
CONTROLLER TESTS
• a
CONTROLLER TESTS: SPOCK
• a
GORM: TESTING
• grails-datastore-gorm-tck • In-memory GORM implementation
• constraints
TEST DE INTEGRACIÓN
• Arranca instancia de Grails
• Base de datos en memoria
• Environment “test”
• Cada test en una transacción
TEST INTEGRACIÓN: CONFIG
TEST INTEGRACIÓN: BOOTSTRAP
TEST INTEGRACIÓN: BOOTSTRAP
Y MUCHO MAS: SPOCK
• a
Y MUCHO MÁS: TEST FUNCIONALES
• a
¿TE GUSTA GROOVY?
En Madrid, 4 de Nov. de 2011
• Apúntate en http://greach.es
¡GRACIAS!
¿Preguntas? ¿Dudas?