SlideShare una empresa de Scribd logo
1 de 13
Descargar para leer sin conexión
Escribiendo Pruebas con
Spock
¿Y quién es éste tipo?
๏  Desarrollador

desde el inicio (1995 y contando …)

๏  Creyente fiel del Código Abierto y Libre
๏  Miembro del equipo
๏  Líder del proyecto
๏  Actualmente trabajando con

www.canoo.com

2
Que es spock?
Donde, Quien, Como?

Porque?

■  http://spockframework.org

■  Mayor expresividad

■  Peter Niederwiser @pniederw

■  Facil de aprender

■  Lenguage para pruebas basado en
Groovy
■  Manipulacion de codigo byte en
tiempo de compilacion
■  Inspirado en JUnit, Rspec, jMock,
Mockito, Groovy, Scala y Vulcans

www.canoo.com

■  Use multivariado (unitario a
funcional)
■  Potencializa la la sintaxis idiomatica
de Groovy
■  Compatible con Junit, IDEs, CI.
■  Extendible via plugins

3
Primeras impresiones
import spock.lang.Specification
class HelloSpec extends Specification {
def "length of Spock's and his friends' names"() {
expect:
name.size() == length
where:
name
"Spock"
"Kirk"
"Scotty"
}

|
|
|
|

length
5
4
6

}

www.canoo.com

4
Introduciendo un defecto
import spock.lang.Specification
class HelloSpec extends Specification {
def "length of Spock's and his friends' names"() {
expect:
name.size() == length
where:
name
"Spock"
"Kirk"
"Scotty"
}

|
|
|
|

length
5
4
7

}

!

www.canoo.com

5
A wild error appears!

Condition not satisfied:
name.size() == length
|
|
| |
|
6
| 7
Scotty
false
<Click to see difference>
at HelloSpec.length of Spock's and his friends' names(HelloSpec.groovy:5)

www.canoo.com

6
Caracteristicas (1)
Bloques
■  given:

precondiciones, inicializacion de datos, etc.

■  when:

acciones que producen un resultado

■  then:

verificacion de expectativas

■  expect:

alternativa corta a when: y then:

■  where:

aplica entradas de datos varias

■  and:

sub-dividide (y enlaza) bloques

■  setup:

otro nombre para given:

■  cleanup:

post condiciones, limpieza de recursos, etc.

www.canoo.com

7
Caracteristicas (2)

Ciclo de Vida

Dirigido por Datos

■  setup

■  Variables ligadas a
Listas

■  cleanup
■  setupSpec
■  cleanupSpec

■  Variables ligadas a
Tablas
■  @Unroll
■  @Shared
	


www.canoo.com

8
Unrolling
import spock.lang.Specification
import spock.lang.Unroll
@Unroll
class HelloSpec extends Specification {
def "Length of #name should be #name.size(), value is #length"() {
expect:
name.size() == length
where:
name
| length
"Spock" | 5
"Kirk"
| 4
"Scotty" | 6
}
}

www.canoo.com

9
Unrolling visto por un IDE

www.canoo.com

10
Interactiones (Mocks)
import spock.lang.Specification
import java.beans.PropertyChangeListener
class Model {
@groovy.beans.Bindable String name
}
class BindableSpec extends Specification {
def "Model properties are observable"() {
given:
def model = new Model()
def listener = Mock(PropertyChangeListener)
when:
model.addPropertyChangeListener(listener)
model.name = 'Groovy'
model.name = 'Java'
then:
1 * listener.propertyChange({it.newValue == 'Groovy'})
1 * listener.propertyChange({it.newValue == 'Java'})
}
}
www.canoo.com

11
Espere, aun hay mas!

■  http://docs.spockframework.org/en/latest/
■  Spock es extendible via plugins
■  Pruebas funcionales para aplicaciones web con
GEB
■  Plugins para Grails y Griffon
■  Siguiente liberacion sera el codiciado 1.0.0

www.canoo.com

12
Gracias!
twitter: @aalmiray

Más contenido relacionado

Destacado

2014-21018 Kontsumobideren Plan Estrategikoa
2014-21018 Kontsumobideren Plan Estrategikoa2014-21018 Kontsumobideren Plan Estrategikoa
2014-21018 Kontsumobideren Plan EstrategikoaIrekia - EJGV
 
Inleiding calculus 1415 huiswerk week 4
Inleiding calculus 1415 huiswerk week 4Inleiding calculus 1415 huiswerk week 4
Inleiding calculus 1415 huiswerk week 4Gerard van Alst
 
E Os Sites Perecem por Falta de Conhecimento
E Os Sites Perecem por Falta de ConhecimentoE Os Sites Perecem por Falta de Conhecimento
E Os Sites Perecem por Falta de ConhecimentoPatric San
 
Protocolo consulta tipnis modificado
Protocolo consulta tipnis modificadoProtocolo consulta tipnis modificado
Protocolo consulta tipnis modificadoErbol Digital
 
Aurrera begira 2013 - Gazteen aurreikuspenei buruzko adierazleak
Aurrera begira 2013 - Gazteen aurreikuspenei buruzko adierazleakAurrera begira 2013 - Gazteen aurreikuspenei buruzko adierazleak
Aurrera begira 2013 - Gazteen aurreikuspenei buruzko adierazleakIrekia - EJGV
 
Inmigraziorako Itun Soziala Euskadin.pdf
Inmigraziorako Itun Soziala Euskadin.pdfInmigraziorako Itun Soziala Euskadin.pdf
Inmigraziorako Itun Soziala Euskadin.pdfIrekia - EJGV
 
Pto de Contato - Desenvolvimento de Games
Pto de Contato - Desenvolvimento de GamesPto de Contato - Desenvolvimento de Games
Pto de Contato - Desenvolvimento de GamesDanilo Costa
 
Bake eta Bizikidetza Planaren oinarri eta proiektuak hezkuntza arloan
Bake eta Bizikidetza Planaren oinarri eta proiektuak hezkuntza arloanBake eta Bizikidetza Planaren oinarri eta proiektuak hezkuntza arloan
Bake eta Bizikidetza Planaren oinarri eta proiektuak hezkuntza arloanIrekia - EJGV
 
Dra. chyntia barcellos cartilha - revisão 1
Dra. chyntia barcellos   cartilha - revisão 1Dra. chyntia barcellos   cartilha - revisão 1
Dra. chyntia barcellos cartilha - revisão 1ChyntiaBarcellos
 

Destacado (20)

prac
pracprac
prac
 
Berchman lyrics(301 323)
Berchman lyrics(301 323)Berchman lyrics(301 323)
Berchman lyrics(301 323)
 
2014-21018 Kontsumobideren Plan Estrategikoa
2014-21018 Kontsumobideren Plan Estrategikoa2014-21018 Kontsumobideren Plan Estrategikoa
2014-21018 Kontsumobideren Plan Estrategikoa
 
Beyond the paper CV and developing a scientific profile through social media,...
Beyond the paper CV and developing a scientific profile through social media,...Beyond the paper CV and developing a scientific profile through social media,...
Beyond the paper CV and developing a scientific profile through social media,...
 
Inleiding calculus 1415 huiswerk week 4
Inleiding calculus 1415 huiswerk week 4Inleiding calculus 1415 huiswerk week 4
Inleiding calculus 1415 huiswerk week 4
 
Slot 7 pewakilan data
Slot 7 pewakilan dataSlot 7 pewakilan data
Slot 7 pewakilan data
 
E Os Sites Perecem por Falta de Conhecimento
E Os Sites Perecem por Falta de ConhecimentoE Os Sites Perecem por Falta de Conhecimento
E Os Sites Perecem por Falta de Conhecimento
 
Protocolo consulta tipnis modificado
Protocolo consulta tipnis modificadoProtocolo consulta tipnis modificado
Protocolo consulta tipnis modificado
 
KPI's = Succes
KPI's = SuccesKPI's = Succes
KPI's = Succes
 
Aurrera begira 2013 - Gazteen aurreikuspenei buruzko adierazleak
Aurrera begira 2013 - Gazteen aurreikuspenei buruzko adierazleakAurrera begira 2013 - Gazteen aurreikuspenei buruzko adierazleak
Aurrera begira 2013 - Gazteen aurreikuspenei buruzko adierazleak
 
Inmigraziorako Itun Soziala Euskadin.pdf
Inmigraziorako Itun Soziala Euskadin.pdfInmigraziorako Itun Soziala Euskadin.pdf
Inmigraziorako Itun Soziala Euskadin.pdf
 
Tema 5
Tema 5Tema 5
Tema 5
 
Tema1
Tema1Tema1
Tema1
 
Pto de Contato - Desenvolvimento de Games
Pto de Contato - Desenvolvimento de GamesPto de Contato - Desenvolvimento de Games
Pto de Contato - Desenvolvimento de Games
 
Bake eta Bizikidetza Planaren oinarri eta proiektuak hezkuntza arloan
Bake eta Bizikidetza Planaren oinarri eta proiektuak hezkuntza arloanBake eta Bizikidetza Planaren oinarri eta proiektuak hezkuntza arloan
Bake eta Bizikidetza Planaren oinarri eta proiektuak hezkuntza arloan
 
Jornada Portes Obertes de l'HUSC curs 2015-2016
Jornada Portes Obertes de l'HUSC curs 2015-2016Jornada Portes Obertes de l'HUSC curs 2015-2016
Jornada Portes Obertes de l'HUSC curs 2015-2016
 
Fenómenos naturales
Fenómenos naturalesFenómenos naturales
Fenómenos naturales
 
Session_173644_Certificate
Session_173644_CertificateSession_173644_Certificate
Session_173644_Certificate
 
Dra. chyntia barcellos cartilha - revisão 1
Dra. chyntia barcellos   cartilha - revisão 1Dra. chyntia barcellos   cartilha - revisão 1
Dra. chyntia barcellos cartilha - revisão 1
 
Futbol.encuesta
Futbol.encuestaFutbol.encuesta
Futbol.encuesta
 

Similar a Spock

40 Novedades de JavaSE 9
40 Novedades de JavaSE 940 Novedades de JavaSE 9
40 Novedades de JavaSE 9Alexis Lopez
 
Groovy & Grails
Groovy & GrailsGroovy & Grails
Groovy & Grailsbetabeers
 
Desarrollo web en Nodejs con Pillars por Chelo Quilón
Desarrollo web en Nodejs con Pillars por Chelo QuilónDesarrollo web en Nodejs con Pillars por Chelo Quilón
Desarrollo web en Nodejs con Pillars por Chelo Quilónbetabeers
 
Buildout: Crear y desplegar entornos reproducibles en Python
Buildout: Crear y desplegar entornos reproducibles en PythonBuildout: Crear y desplegar entornos reproducibles en Python
Buildout: Crear y desplegar entornos reproducibles en PythonCodeSyntax
 
JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011
JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011
JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011Jano González
 
Introducción a NodeJS
Introducción a NodeJSIntroducción a NodeJS
Introducción a NodeJSBEEVA_es
 
101 Panel Tech Days - Spock: O por qué deberías utilizarlo para testear tu có...
101 Panel Tech Days - Spock: O por qué deberías utilizarlo para testear tu có...101 Panel Tech Days - Spock: O por qué deberías utilizarlo para testear tu có...
101 Panel Tech Days - Spock: O por qué deberías utilizarlo para testear tu có...Iván López Martín
 
LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)Emanuel Calvo
 
Iron workers y javascript
Iron workers y javascriptIron workers y javascript
Iron workers y javascriptJavier Constain
 

Similar a Spock (20)

40 Novedades de JavaSE 9
40 Novedades de JavaSE 940 Novedades de JavaSE 9
40 Novedades de JavaSE 9
 
Javascript
JavascriptJavascript
Javascript
 
Introducción a groovy & grails
Introducción a groovy & grailsIntroducción a groovy & grails
Introducción a groovy & grails
 
Dbdeployer
DbdeployerDbdeployer
Dbdeployer
 
Groovy & Grails
Groovy & GrailsGroovy & Grails
Groovy & Grails
 
Metacoretex
MetacoretexMetacoretex
Metacoretex
 
Grails barcamp 2013
Grails barcamp 2013Grails barcamp 2013
Grails barcamp 2013
 
JRuby al Rescate de J2EE
JRuby al Rescate de J2EEJRuby al Rescate de J2EE
JRuby al Rescate de J2EE
 
Desarrollo web en Nodejs con Pillars por Chelo Quilón
Desarrollo web en Nodejs con Pillars por Chelo QuilónDesarrollo web en Nodejs con Pillars por Chelo Quilón
Desarrollo web en Nodejs con Pillars por Chelo Quilón
 
Buildout: Crear y desplegar entornos reproducibles en Python
Buildout: Crear y desplegar entornos reproducibles en PythonBuildout: Crear y desplegar entornos reproducibles en Python
Buildout: Crear y desplegar entornos reproducibles en Python
 
JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011
JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011
JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011
 
Django
DjangoDjango
Django
 
Introducción a NodeJS
Introducción a NodeJSIntroducción a NodeJS
Introducción a NodeJS
 
Capa de persistencia con ecto
Capa de persistencia con ectoCapa de persistencia con ecto
Capa de persistencia con ecto
 
101 Panel Tech Days - Spock: O por qué deberías utilizarlo para testear tu có...
101 Panel Tech Days - Spock: O por qué deberías utilizarlo para testear tu có...101 Panel Tech Days - Spock: O por qué deberías utilizarlo para testear tu có...
101 Panel Tech Days - Spock: O por qué deberías utilizarlo para testear tu có...
 
Semana 2 Configuración entorno de desarrollo
Semana 2   Configuración entorno de desarrolloSemana 2   Configuración entorno de desarrollo
Semana 2 Configuración entorno de desarrollo
 
Gestión Remota de Equipos con Python
Gestión Remota de Equipos con PythonGestión Remota de Equipos con Python
Gestión Remota de Equipos con Python
 
Java world
Java worldJava world
Java world
 
LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)
 
Iron workers y javascript
Iron workers y javascriptIron workers y javascript
Iron workers y javascript
 

Más de Software Guru

Hola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasHola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasSoftware Guru
 
Estructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesEstructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesSoftware Guru
 
Building bias-aware environments
Building bias-aware environmentsBuilding bias-aware environments
Building bias-aware environmentsSoftware Guru
 
El secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorEl secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorSoftware Guru
 
Cómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealCómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealSoftware Guru
 
Automatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowAutomatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowSoftware Guru
 
How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:Software Guru
 
Introducción al machine learning
Introducción al machine learningIntroducción al machine learning
Introducción al machine learningSoftware Guru
 
Democratizando el uso de CoDi
Democratizando el uso de CoDiDemocratizando el uso de CoDi
Democratizando el uso de CoDiSoftware Guru
 
Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Software Guru
 
Taller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSTaller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSSoftware Guru
 
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...Software Guru
 
¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?Software Guru
 
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Software Guru
 
Pruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsPruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsSoftware Guru
 
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosElixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosSoftware Guru
 
Así publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressAsí publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressSoftware Guru
 
Achieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsAchieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsSoftware Guru
 
Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Software Guru
 
De lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoDe lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoSoftware Guru
 

Más de Software Guru (20)

Hola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasHola Mundo del Internet de las Cosas
Hola Mundo del Internet de las Cosas
 
Estructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesEstructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso reales
 
Building bias-aware environments
Building bias-aware environmentsBuilding bias-aware environments
Building bias-aware environments
 
El secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorEl secreto para ser un desarrollador Senior
El secreto para ser un desarrollador Senior
 
Cómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealCómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto ideal
 
Automatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowAutomatizando ideas con Apache Airflow
Automatizando ideas con Apache Airflow
 
How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:
 
Introducción al machine learning
Introducción al machine learningIntroducción al machine learning
Introducción al machine learning
 
Democratizando el uso de CoDi
Democratizando el uso de CoDiDemocratizando el uso de CoDi
Democratizando el uso de CoDi
 
Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0
 
Taller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSTaller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJS
 
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
 
¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?
 
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
 
Pruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsPruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOps
 
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosElixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
 
Así publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressAsí publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stress
 
Achieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsAchieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goals
 
Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19
 
De lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoDe lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseño
 

Último

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxRogerPrieto3
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 

Último (15)

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptx
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 

Spock

  • 2. ¿Y quién es éste tipo? ๏  Desarrollador desde el inicio (1995 y contando …) ๏  Creyente fiel del Código Abierto y Libre ๏  Miembro del equipo ๏  Líder del proyecto ๏  Actualmente trabajando con www.canoo.com 2
  • 3. Que es spock? Donde, Quien, Como? Porque? ■  http://spockframework.org ■  Mayor expresividad ■  Peter Niederwiser @pniederw ■  Facil de aprender ■  Lenguage para pruebas basado en Groovy ■  Manipulacion de codigo byte en tiempo de compilacion ■  Inspirado en JUnit, Rspec, jMock, Mockito, Groovy, Scala y Vulcans www.canoo.com ■  Use multivariado (unitario a funcional) ■  Potencializa la la sintaxis idiomatica de Groovy ■  Compatible con Junit, IDEs, CI. ■  Extendible via plugins 3
  • 4. Primeras impresiones import spock.lang.Specification class HelloSpec extends Specification { def "length of Spock's and his friends' names"() { expect: name.size() == length where: name "Spock" "Kirk" "Scotty" } | | | | length 5 4 6 } www.canoo.com 4
  • 5. Introduciendo un defecto import spock.lang.Specification class HelloSpec extends Specification { def "length of Spock's and his friends' names"() { expect: name.size() == length where: name "Spock" "Kirk" "Scotty" } | | | | length 5 4 7 } ! www.canoo.com 5
  • 6. A wild error appears! Condition not satisfied: name.size() == length | | | | | 6 | 7 Scotty false <Click to see difference> at HelloSpec.length of Spock's and his friends' names(HelloSpec.groovy:5) www.canoo.com 6
  • 7. Caracteristicas (1) Bloques ■  given: precondiciones, inicializacion de datos, etc. ■  when: acciones que producen un resultado ■  then: verificacion de expectativas ■  expect: alternativa corta a when: y then: ■  where: aplica entradas de datos varias ■  and: sub-dividide (y enlaza) bloques ■  setup: otro nombre para given: ■  cleanup: post condiciones, limpieza de recursos, etc. www.canoo.com 7
  • 8. Caracteristicas (2) Ciclo de Vida Dirigido por Datos ■  setup ■  Variables ligadas a Listas ■  cleanup ■  setupSpec ■  cleanupSpec ■  Variables ligadas a Tablas ■  @Unroll ■  @Shared www.canoo.com 8
  • 9. Unrolling import spock.lang.Specification import spock.lang.Unroll @Unroll class HelloSpec extends Specification { def "Length of #name should be #name.size(), value is #length"() { expect: name.size() == length where: name | length "Spock" | 5 "Kirk" | 4 "Scotty" | 6 } } www.canoo.com 9
  • 10. Unrolling visto por un IDE www.canoo.com 10
  • 11. Interactiones (Mocks) import spock.lang.Specification import java.beans.PropertyChangeListener class Model { @groovy.beans.Bindable String name } class BindableSpec extends Specification { def "Model properties are observable"() { given: def model = new Model() def listener = Mock(PropertyChangeListener) when: model.addPropertyChangeListener(listener) model.name = 'Groovy' model.name = 'Java' then: 1 * listener.propertyChange({it.newValue == 'Groovy'}) 1 * listener.propertyChange({it.newValue == 'Java'}) } } www.canoo.com 11
  • 12. Espere, aun hay mas! ■  http://docs.spockframework.org/en/latest/ ■  Spock es extendible via plugins ■  Pruebas funcionales para aplicaciones web con GEB ■  Plugins para Grails y Griffon ■  Siguiente liberacion sera el codiciado 1.0.0 www.canoo.com 12