Introducción al testing con Grails (XPWeek)

Post on 11-Jun-2015

1.989 views 3 download

description

Charla para la XPWeek el 23 de Septiembre de 2011

Transcript of Introducción al testing con Grails (XPWeek)

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?