SlideShare una empresa de Scribd logo
1 de 62
Descargar para leer sin conexión
Framework Grails
Sesión 6: Framework de test Spock.
12
Índice
Introducción a los tests
Framework de test Spock
Spock en Grails
Introducción a los tests
¿Qué son los tests?
Tipos de tests de software
Otros frameworks de tests
¿Qué son los tests?
Los tests de software se pueden definir como el proceso
empleado para comprobar la corrección de un programa
informático y se puede considerar como una parte más en el
proceso del control de calidad.
Tipos de tests de software
Tests unitarios
Tests de integración
Tests funcionales
Otros frameworks de tests
JUnit
TestNG
Características de Spock
Fácil de aprender
Integración con Groovy
Eliminación aserciones innecesarias
Información detallada en las salidas de los tests
Diseñado desde el punto de vista del usuario
TDD, BDD, etc
Lenguaje altamente expresivo
Compatible con JUnit
Combina ideas de otros frameworks como JUnit o jMock
Instalación de Spock en Grails
BuildConfig.groovy
grails.project.dependency.resolution={
repositories{
grailsCentral()
mavenCentral()
}
dependencies{
test"org.spockframework:spock-grails-support:0.7-groovy-2.0"
}
plugins{
test(":spock:0.7"){
exclude"spock-grails-support"
}
}
}
Instalación de Spock en Grails
grailstest-app
Tests en Spock
Extienden spock.lang.Specification
packagees.ua.expertojava.todo
importspock.lang.Specification
classMyFirstTestextendsSpecification{
def"Eloperadorsumafuncionacorrectamente"(){
expect:
10==2+8
and:
10==0+10
and:
10==10+0
}
}
A tener en cuenta
Sintaxis muy sencilla de leer
Nombre de los métodos entrecomillados
No son necesarias las aserciones
Tests en Spock
def"Elmétodoplusdelosnúmerosfuncionacorrectamente"(){
when:
defresult=10.plus(2)
then:
result==12
}
A tener en cuenta
Bloque when lanza el método a probar
Bloque then comprueba la respuesta
Tests en Spock
@Unroll
def"Elmétodoplusfuncionaconelsumador#sumadoryelsumando#sumando"(){
when:
defresult=sumador.plus(sumando)
then:
result==resultadoEsperado
where:
sumador| sumando | resultadoEsperado
0 | 0 | 0
0 | 1 | 1
1 | 1 | 2
-1 | 0 | -1
0 | -1 | -1
-1 | -1 | -2
2 | 1 | 3
}
A tener en cuenta
Tenemos una batería de pruebas con datos diferentes
Utilizamos placeholders en el nombre del test
Unroll despliega cada conjunto de datos como un test
nuevo
Resultado sin @Unroll
Tests en Spock
@Unroll
def"Elmétodoplusfuncionaconelsumador#sumadoryelsumando#sumandoutilizandolistas"(){
when:
defresult=sumador.plus(sumando)
then:
result==resultadoEsperado
where:
sumador<<[0,0,1,-1,0,-1,2]
sumando<<[0,1,1,0,-1,-1,1]
resultadoEsperado<<[0,1,2,-1,-1,-2,3]
}
Tests en Spock
def"Elmétodoparaconcatenarcadenasañadeunsigno+entrelascadenasconcatenadas"(){
given:
String.metaClass.concat={Stringc->
"${delegate}+${c}"
}
expect:
"cadena1".concat("cadena2")=="cadena1+cadena2"
cleanup:
String.metaClass=null
}
A tener en cuenta
Bloque given para preparar el test
Bloque cleanup para dejar las cosas como estaban
Spock en Grails
Tests sobre clases de dominio
Tests sobre contraladores
Tests sobre librerías de etiquetas, vistas y plantillas
Tests sobre servicios
Tests mockeando objetos
Algunas anotaciones interesantes
Métodos predefinidos
setupSpec(), se ejecuta antes del primer test de una
determinada clase de tests con Spock
cleanupSpec(), se ejecuta después del último test de una
determinada clase de tests con Spock
setup(), se ejecuta antes de cada test de una determinada
clase de tests con Spock
setupSpec(), se ejecuta después de cada test de una
determinada clase de tests con Spock
Tests sobre clases de dominio en Grails
packagees.ua.expertojava.todo
classCategory{
Stringname
Stringdescription
statichasMany=[todos:Todo]
staticconstraints={
name(blank:false)
description(blank:true,nullable:true,maxSize:1000)
}
StringtoString(){
name
}
}
Tests sobre clases de dominio en Grails
packagees.ua.expertojava.todo
importgrails.test.mixin.TestFor
importspock.lang.Specification
importspock.lang.Unroll
/**
*SeetheAPIfor{@linkgrails.test.mixin.domain.DomainClassUnitTestMixin}forusageinstructions
*/
@TestFor(Category)
classCategorySpecextendsSpecification{
defsetup(){
}
defcleanup(){
}
...
Tests sobre clases de dominio en Grails
def"Elnombredelacategoríanopuedeserlacadenavacía"(){
given:
defc1=newCategory(name:"")
when:
c1.validate()
then:
c1?.errors['name']
}
Tests sobre clases de dominio en Grails
def"Sielnombrenoeslacadenavacía,estecamponodaráproblemas"(){
given:
defc1=newCategory(name:"algo")
when:
c1.validate()
then:
!c1?.errors['name']
}
Tests sobre clases de dominio en Grails
def"Siladescripcióneslacadenavacía,estecamponodaráproblemas"(){
given:
defc1=newCategory(description:"")
when:
c1.validate()
then:
!c1?.errors['description']
}
Tests sobre clases de dominio en Grails
def"Ladescripcióndelacategoríapuedesernull"(){
given:
defc1=newCategory(description:null)
when:
c1.validate()
then:
!c1?.errors['description']
}
Tests sobre clases de dominio en Grails
@Unroll
def"Siladescripcióntienemenosde1001caracteres,nodaráproblemas"(){
given:
defc1=newCategory(description:"a"*characters)
when:
c1.validate()
then:
!c1?.errors['description']
where:
characters<<[0,1,999,1000]
}
Tests sobre clases de dominio en Grails
@Unroll
def"Siladescripcióntienemás1000caracteres,daráproblemas"(){
given:
defc1=newCategory(description:"a"*characters)
when:
c1.validate()
then:
c1?.errors['description']
where:
characters<<[1001,1002]
}
Tests sobre clases de dominio en Grails
def"LainstanciadeCategoríadevuelvesunombrepordefecto"(){
expect:
newCategory(name:"Thecategoryname").toString()=="Thecategoryname"
}
pto. Ciencia de la Computación e I.A. Sesión 6
Tests sobre controladores en Grails
packagees.ua.expertojava.todo
importgrails.test.mixin.*
importspock.lang.*
@TestFor(CategoryController)
@Mock(Category)
classCategoryControllerSpecextendsSpecification{
defpopulateValidParams(params){
assertparams!=null
//TODO:Populatevalidpropertieslike...
//params["name"]='someValidName'
}
...
Tests sobre controladores en Grails
defpopulateValidParams(params){
assertparams!=null
params["name"]='Categoryname'
}
Tests sobre controladores en Grails
grailstest-appCategoryControllerSpecunit:
Tests sobre controladores en Grails
packagees.ua.expertojava.todo
importgrails.test.mixin.*
importspock.lang.*
@TestFor(CategoryController)
@Mock(Category)
classCategoryControllerSpecextendsSpecification{
defpopulateValidParams(params){
assertparams!=null
params["name"]='Categoryname'
}
...
}
Tests sobre controladores en Grails
void"Testtheindexactionreturnsthecorrectmodel"(){
when:"Theindexactionisexecuted"
controller.index()
then:"Themodeliscorrect"
!model.categoryInstanceList
model.categoryInstanceCount==0
}
Tests sobre controladores en Grails
void"Testthecreateactionreturnsthecorrectmodel"(){
when:"Thecreateactionisexecuted"
controller.create()
then:"Themodeliscorrectlycreated"
model.categoryInstance!=null
}
Tests sobre controladores en Grails
void"Testthesaveactioncorrectlypersistsaninstance"(){
when:"Thesaveactionisexecutedwithaninvalidinstance"
request.contentType=FORM_CONTENT_TYPE
request.method='POST'
defcategory=newCategory()
category.validate()
controller.save(category)
then:"Thecreateviewisrenderedagainwiththecorrectmodel"
model.categoryInstance!=null
view=='create'
when:"Thesaveactionisexecutedwithavalidinstance"
response.reset()
populateValidParams(params)
category=newCategory(params)
controller.save(category)
Tests sobre controladores en Grails
void"Testthattheshowactionreturnsthecorrectmodel"(){
when:"Theshowactionisexecutedwithanulldomain"
controller.show(null)
then:"A404errorisreturned"
response.status==404
when:"Adomaininstanceispassedtotheshowaction"
populateValidParams(params)
defcategory=newCategory(params)
controller.show(category)
then:"Amodelispopulatedcontainingthedomaininstance"
model.categoryInstance==category
}
Tests sobre controladores en Grails
void"Testthattheeditactionreturnsthecorrectmodel"(){
when:"Theeditactionisexecutedwithanulldomain"
controller.edit(null)
then:"A404errorisreturned"
response.status==404
when:"Adomaininstanceispassedtotheeditaction"
populateValidParams(params)
defcategory=newCategory(params)
controller.edit(category)
then:"Amodelispopulatedcontainingthedomaininstance"
model.categoryInstance==category
}
Tests sobre controladores en Grails
void"Testthatthedeleteactiondeletesaninstanceifitexists"(){
when:"Thedeleteactioniscalledforanullinstance"
request.contentType=FORM_CONTENT_TYPE
request.method='DELETE'
controller.delete(null)
then:"A404isreturned"
response.redirectedUrl=='/category/index'
flash.message!=null
when:"Adomaininstanceiscreated"
response.reset()
populateValidParams(params)
defcategory=newCategory(params).save(flush:true)
then:"Itexists"
Category.count()==1
when:"Thedomaininstanceispassedtothedeleteaction"
A tener en cuenta
Variables inyectadas: controller, model, view, response,
request y flash
Anotación @Mock
Ejecutar controller.method()
Variable model para comprobar el modelo devuelto
Redirecciones con response.redirectedUrl
Tests sobre librerías de etiquetas, vistas y
plantillas
defincludeJs={attrs->
out<<"<scriptsrc="scripts/${attrs['script']}.js"></script>"
}
Tests sobre librerías de etiquetas, vistas y
plantillas
void"LaetiquetaincludeJsdevuelveunareferenciaalalibreríajavascriptpasadaporparámetro"(){
expect:
applyTemplate('<todo:includejsscript=""></todo:includejs>')=="<scriptsrc="scripts/.js"
applyTemplate('<todo:includejsscript="myfile"></todo:includejs>')=="<scriptsrc="scripts/myf
}
Tests sobre librerías de etiquetas, vistas y
plantillas
void"Elpiedepáginaserenderizacorrectamente"(){
when:
defresult=render(template:'/common/footer')
then:
result=="<divclass=""footer""role=""contentinfo"">n"+
" ©2015ExpertoenDesarrollodeAplicacionesWebconJavaEEyJavascript<br>n"+
" AplicaciónTodocreadaporFranciscoJoséGarcíaRico(21.542.334F)n"+
"</div>"
}
Tests sobre servicios en Grails
packagees.ua.expertojava.todo
importgrails.test.mixin.TestFor
importspock.lang.Specification
/**
*SeetheAPIfor{@linkgrails.test.mixin.services.ServiceUnitTestMixin}forusageinstructions
*/
@TestFor(TodoService)
classTodoServiceSpecextendsSpecification{
defsetup(){
}
defcleanup(){
}
void"testsomething"(){
}
Tests sobre servicios en Grails
defgetNextTodos(Integerdays,params){
Datenow=newDate(System.currentTimeMillis())
Dateto=now+days
Todo.findAllByDateBetween(now,to,params)
}
Tests sobre servicios en Grails
void"ElmétodogetNextTodosdevuelvelossiguientestodosdelosdíaspasadoporparámetro"(){
given:
deftodoDayBeforeYesterday=newTodo(title:"Tododaybeforeyesterday",date:newDate()-
deftodoYesterday=newTodo(title:"Todoyesterday",date:newDate()-1)
deftodoToday=newTodo(title:"Todotoday",date:newDate())
deftodoTomorrow=newTodo(title:"Todotomorrow",date:newDate()+1)
deftodoDayAfterTomorrow=newTodo(title:"Tododayaftertomorrow",date:newDate()+
deftodoDayAfterDayAfterTomorrow=newTodo(title:"Tododayaftertomorrow",date:newDate()+
and:
mockDomain(Todo,[todoDayBeforeYesterday,todoYesterday,todoToday,todoTomorrow,todoDayAfterTo
and:
defnextTodos=service.getNextTodos(2,[:])
expect:
Todo.count()==6
and:
nextTodos.containsAll([todoTomorrow,todoDayAfterTomorrow])
nextTodos.size()==2
and:
!nextTodos.contains(todoDayBeforeYesterday)
Tests con Spock mockeando objetos
@Unroll
void"ElmétodoprintIconFromBooleandevuelveunarutaaunaimagen"(){
when:
defoutput=applyTemplate('<todo:printiconfrombooleanvalue="${value}"></todo:printiconfromboo
then:
output==expectedOutput
where:
value | expectedOutput
true | "icontrue.png"
false | "iconfalse.png"
}
Tests con Spock mockeando objetos
@Unroll
void"ElmétodoprintIconFromBooleandevuelveunarutaaunaimagen"(){
given:
defassetsTagLib=Mock(AssetsTagLib)
tagLib.metaClass.asset=assetsTagLib
when:
defoutput=applyTemplate('<todo:printiconfrombooleanvalue="${value}"></todo:printiconfromboo
then:
output==expectedOutput
and:
1*assetsTagLib.image(_)>>{value?"icontrue.png":"iconfalse.png"}
where:
value | expectedOutput
true | "icontrue.png"
false | "iconfalse.png"
}
A tener en cuenta
Mockeamos la librería AssetsTagLib
Indicamos cuantas interacciones se van a producir con
nuestro objecto mockeado
Utilizamos placeholder para los parámetros
Algunas anotaciones interesantes
@Ignore
@Ignore
def"myfeature"(){...}
@Ignore
classMySpecextendsSpecification{...}
@Ignore(reason="TODO")
def"myfeature"(){...}
Algunas anotaciones interesantes
@IgnoreRest
def"I'llbeignored"(){...}
@IgnoreRest
def"I'llrun"(){...}
def"I'llalsobeignored"(){...}
Algunas anotaciones interesantes
@IgnoreIf
@IgnoreIf({System.getProperty("os.name").contains("windows")})
def"I'llruneverywherebutonWindows"(){...}
Algunas anotaciones interesantes
@IgnoreIf
sys, un mapa con todas las propiedades del sistema
env, un mapa con todas las variables de entorno
os, información acerca del sistema operativo
jvm, información sobre la máquina virtual de Java
Algunas anotaciones interesantes
@Requires
@Requires({os.windows})
def"I'llonlyrunonWindows"(){...}
Algunas anotaciones interesantes
@Stepwise
Respeta el orden de los tests
Algunas anotaciones interesantes
@Timeout
@Timeout(5)
def"IfailifIrunformorethanfiveseconds"(){...}
@Timeout(value=100,unit=TimeUnit.MILLISECONDS)
def"Ibetterbequick"{...}
Algunas anotaciones interesantes
@Timeout
@Timeout(10)
classTimedSpecextendsSpecification{
def"Ifailaftertenseconds"(){...}
def"Metoo"(){...}
@Timeout(value=250,unit=MILLISECONDS)
def"Ifailmuchfaster"(){...}
}
Algunas anotaciones interesantes
@ConfineMetaClassChanges
@Stepwise
classFooSpecextendsSpecification{
@ConfineMetaClassChanges
def"Irunfirst"(){
when:
String.metaClass.someMethod={delegate}
then:
String.metaClass.hasMetaMethod('someMethod')
}
def"Irunsecond"(){
when:
"Foo".someMethod()
then:
thrown(MissingMethodException)
}
}
Algunas anotaciones interesantes
@ConfineMetaClassChanges
@Title("Thisiseasytoread")
classThisIsHarderToReadSpecextendsSpecification{
...
}
@Narrative(""""
Asauser
Iwantfoo
Sothatbar
""")
classGiveTheUserFooSpec(){...}
¿Preguntas...?
Ejercicios

Más contenido relacionado

La actualidad más candente

Node para Javeros: Conoce a tu enemigo
Node para Javeros: Conoce a tu enemigoNode para Javeros: Conoce a tu enemigo
Node para Javeros: Conoce a tu enemigoMicael Gallego
 
Symfony Pruebas Unitarias
Symfony Pruebas UnitariasSymfony Pruebas Unitarias
Symfony Pruebas UnitariasRodrigo Miranda
 
Java script tarea
Java script tareaJava script tarea
Java script tareasaullopes24
 
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...Micael Gallego
 
Java 9, 10, 11 ,12, 13 and more
Java 9, 10, 11 ,12, 13 and moreJava 9, 10, 11 ,12, 13 and more
Java 9, 10, 11 ,12, 13 and moreHillmerC
 
Junit con netbeans
Junit con netbeansJunit con netbeans
Junit con netbeansbachispasaca
 
Taller PyConEs 2016: Introducción a TDD
Taller PyConEs 2016: Introducción a TDDTaller PyConEs 2016: Introducción a TDD
Taller PyConEs 2016: Introducción a TDDAlea Soluciones, S.L.
 
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto realJobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto realJobsket
 
Continuous Delivery Un caso de estudio
Continuous Delivery Un caso de estudioContinuous Delivery Un caso de estudio
Continuous Delivery Un caso de estudioOsvaldo
 
Grails en Expo FISI 2011
Grails en Expo FISI 2011Grails en Expo FISI 2011
Grails en Expo FISI 2011jose diaz
 
Mejorando la productividad en proyectos java EE con CI y CD - OTN 2015
Mejorando la productividad en proyectos java EE con  CI y CD - OTN 2015 Mejorando la productividad en proyectos java EE con  CI y CD - OTN 2015
Mejorando la productividad en proyectos java EE con CI y CD - OTN 2015 César Hernández
 
Workshop - Pruebas Unitarias (con Java)
Workshop - Pruebas Unitarias (con Java)Workshop - Pruebas Unitarias (con Java)
Workshop - Pruebas Unitarias (con Java)microgestion
 

La actualidad más candente (20)

Node para Javeros: Conoce a tu enemigo
Node para Javeros: Conoce a tu enemigoNode para Javeros: Conoce a tu enemigo
Node para Javeros: Conoce a tu enemigo
 
Testing Ruby on Rails (spanish)
Testing Ruby on Rails (spanish)Testing Ruby on Rails (spanish)
Testing Ruby on Rails (spanish)
 
Symfony Pruebas Unitarias
Symfony Pruebas UnitariasSymfony Pruebas Unitarias
Symfony Pruebas Unitarias
 
Java script tarea
Java script tareaJava script tarea
Java script tarea
 
Taller Grails
Taller GrailsTaller Grails
Taller Grails
 
Eleva tu capacidad con Groovy
Eleva tu capacidad con GroovyEleva tu capacidad con Groovy
Eleva tu capacidad con Groovy
 
Gradle vs Maven
Gradle vs MavenGradle vs Maven
Gradle vs Maven
 
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
 
Java 9, 10, 11 ,12, 13 and more
Java 9, 10, 11 ,12, 13 and moreJava 9, 10, 11 ,12, 13 and more
Java 9, 10, 11 ,12, 13 and more
 
Junit con netbeans
Junit con netbeansJunit con netbeans
Junit con netbeans
 
Taller PyConEs 2016: Introducción a TDD
Taller PyConEs 2016: Introducción a TDDTaller PyConEs 2016: Introducción a TDD
Taller PyConEs 2016: Introducción a TDD
 
El coste de no usar integración continua
El coste de no usar integración continuaEl coste de no usar integración continua
El coste de no usar integración continua
 
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto realJobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
 
Continuous Delivery Un caso de estudio
Continuous Delivery Un caso de estudioContinuous Delivery Un caso de estudio
Continuous Delivery Un caso de estudio
 
Grails en Expo FISI 2011
Grails en Expo FISI 2011Grails en Expo FISI 2011
Grails en Expo FISI 2011
 
Pucela testingdays testing_en_php
Pucela testingdays testing_en_phpPucela testingdays testing_en_php
Pucela testingdays testing_en_php
 
Intro a Grails @ ITESCA
Intro a Grails @ ITESCAIntro a Grails @ ITESCA
Intro a Grails @ ITESCA
 
Mejorando la productividad en proyectos java EE con CI y CD - OTN 2015
Mejorando la productividad en proyectos java EE con  CI y CD - OTN 2015 Mejorando la productividad en proyectos java EE con  CI y CD - OTN 2015
Mejorando la productividad en proyectos java EE con CI y CD - OTN 2015
 
Jenkins, no me rompas los builds!
Jenkins, no me rompas los builds!Jenkins, no me rompas los builds!
Jenkins, no me rompas los builds!
 
Workshop - Pruebas Unitarias (con Java)
Workshop - Pruebas Unitarias (con Java)Workshop - Pruebas Unitarias (con Java)
Workshop - Pruebas Unitarias (con Java)
 

Destacado

000030 ejercicos resueltos quimica general disoluciones
000030 ejercicos resueltos quimica general disoluciones000030 ejercicos resueltos quimica general disoluciones
000030 ejercicos resueltos quimica general disolucionesDianitha Lopez Barboza
 
Groovy&Grails: desarrollo rápido de aplicaciones
Groovy&Grails: desarrollo rápido de aplicacionesGroovy&Grails: desarrollo rápido de aplicaciones
Groovy&Grails: desarrollo rápido de aplicacionesFran García
 
Certificaciones Tecnológicas: La acreditación del experto
Certificaciones Tecnológicas: La acreditación del expertoCertificaciones Tecnológicas: La acreditación del experto
Certificaciones Tecnológicas: La acreditación del expertoJose Manuel Ortega Candel
 
Manual de uso de la web 2.0
Manual de uso de la web 2.0Manual de uso de la web 2.0
Manual de uso de la web 2.0Domingo Gallardo
 
Working with the AOSP - Linaro Connect Asia 2013
Working with the AOSP - Linaro Connect Asia 2013Working with the AOSP - Linaro Connect Asia 2013
Working with the AOSP - Linaro Connect Asia 2013Opersys inc.
 
Metodologías agiles de desarrollo de software
Metodologías agiles de desarrollo de softwareMetodologías agiles de desarrollo de software
Metodologías agiles de desarrollo de softwareDomingo Gallardo
 

Destacado (20)

Fisica iii practica nº1
Fisica iii practica nº1Fisica iii practica nº1
Fisica iii practica nº1
 
000030 ejercicos resueltos quimica general disoluciones
000030 ejercicos resueltos quimica general disoluciones000030 ejercicos resueltos quimica general disoluciones
000030 ejercicos resueltos quimica general disoluciones
 
Groovy&Grails: desarrollo rápido de aplicaciones
Groovy&Grails: desarrollo rápido de aplicacionesGroovy&Grails: desarrollo rápido de aplicaciones
Groovy&Grails: desarrollo rápido de aplicaciones
 
Certificaciones Tecnológicas: La acreditación del experto
Certificaciones Tecnológicas: La acreditación del expertoCertificaciones Tecnológicas: La acreditación del experto
Certificaciones Tecnológicas: La acreditación del experto
 
Privacidad internet
Privacidad internetPrivacidad internet
Privacidad internet
 
Herramientas gestion proyectos
Herramientas gestion proyectosHerramientas gestion proyectos
Herramientas gestion proyectos
 
Inteligencia Colectiva
Inteligencia ColectivaInteligencia Colectiva
Inteligencia Colectiva
 
Certificaciones tecnológicas
Certificaciones tecnológicasCertificaciones tecnológicas
Certificaciones tecnológicas
 
Por su seguridad
Por su seguridadPor su seguridad
Por su seguridad
 
Seguridad en dispositivos móviles
Seguridad en dispositivos móvilesSeguridad en dispositivos móviles
Seguridad en dispositivos móviles
 
Kanban
KanbanKanban
Kanban
 
Practica calificada fisica i.a
Practica calificada  fisica  i.aPractica calificada  fisica  i.a
Practica calificada fisica i.a
 
Git and git flow
Git and git flowGit and git flow
Git and git flow
 
Manual de uso de la web 2.0
Manual de uso de la web 2.0Manual de uso de la web 2.0
Manual de uso de la web 2.0
 
Practica calificada fisica i.b
Practica calificada  fisica  i.bPractica calificada  fisica  i.b
Practica calificada fisica i.b
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
Working with the AOSP - Linaro Connect Asia 2013
Working with the AOSP - Linaro Connect Asia 2013Working with the AOSP - Linaro Connect Asia 2013
Working with the AOSP - Linaro Connect Asia 2013
 
Estática ii
Estática iiEstática ii
Estática ii
 
Metodologías agiles de desarrollo de software
Metodologías agiles de desarrollo de softwareMetodologías agiles de desarrollo de software
Metodologías agiles de desarrollo de software
 
Testing NodeJS Security
Testing NodeJS SecurityTesting NodeJS Security
Testing NodeJS Security
 

Similar a Framework de test spock

Grails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - SistemasGrails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - SistemasCarlos Camacho
 
Pruebas Automatizadas
Pruebas AutomatizadasPruebas Automatizadas
Pruebas AutomatizadasAngel Nuñez
 
Probando aplicaciones AngularJS
Probando aplicaciones AngularJSProbando aplicaciones AngularJS
Probando aplicaciones AngularJSRodrigo Pimentel
 
Testing & debugging lightning web components
Testing & debugging lightning web componentsTesting & debugging lightning web components
Testing & debugging lightning web componentsFederico Giust
 
Testing efectivo con pytest
Testing efectivo con pytestTesting efectivo con pytest
Testing efectivo con pytestHector Canto
 
Seminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring InsightSeminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring InsightParadigma Digital
 
Junit y Jmock
Junit y JmockJunit y Jmock
Junit y Jmockkaolong
 
Taller de Simpletest - Drupal Day Valencia 2012
Taller de Simpletest - Drupal Day Valencia 2012Taller de Simpletest - Drupal Day Valencia 2012
Taller de Simpletest - Drupal Day Valencia 2012Juampy NR
 
Msdn Webcast InyeccióN De Dependencias Con Spring Framework
Msdn Webcast   InyeccióN De Dependencias Con Spring FrameworkMsdn Webcast   InyeccióN De Dependencias Con Spring Framework
Msdn Webcast InyeccióN De Dependencias Con Spring FrameworkGabriel Oliva
 
Testing Con Visual Studio Team System 2008
Testing Con Visual Studio Team System 2008Testing Con Visual Studio Team System 2008
Testing Con Visual Studio Team System 2008Diego Ferreyra
 
pruebasunitarias-110921232512-phpapp02.pptx
pruebasunitarias-110921232512-phpapp02.pptxpruebasunitarias-110921232512-phpapp02.pptx
pruebasunitarias-110921232512-phpapp02.pptxCompusoftnetCiaLtda
 
Drupal grunt task - Drupal Camp CR 2015
Drupal grunt task  - Drupal Camp CR 2015Drupal grunt task  - Drupal Camp CR 2015
Drupal grunt task - Drupal Camp CR 2015Daniel Noyola
 

Similar a Framework de test spock (20)

Test unitarios
Test unitariosTest unitarios
Test unitarios
 
Grails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - SistemasGrails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - Sistemas
 
TDD: ¿Cómo escribir código testeable?
TDD: ¿Cómo escribir código testeable?TDD: ¿Cómo escribir código testeable?
TDD: ¿Cómo escribir código testeable?
 
Pruebas Automatizadas
Pruebas AutomatizadasPruebas Automatizadas
Pruebas Automatizadas
 
Probando aplicaciones AngularJS
Probando aplicaciones AngularJSProbando aplicaciones AngularJS
Probando aplicaciones AngularJS
 
Testing & debugging lightning web components
Testing & debugging lightning web componentsTesting & debugging lightning web components
Testing & debugging lightning web components
 
Testing efectivo con pytest
Testing efectivo con pytestTesting efectivo con pytest
Testing efectivo con pytest
 
Seminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring InsightSeminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring Insight
 
Junit y Jmock
Junit y JmockJunit y Jmock
Junit y Jmock
 
Introducción a tdd
Introducción a tddIntroducción a tdd
Introducción a tdd
 
Grails barcamp 2013
Grails barcamp 2013Grails barcamp 2013
Grails barcamp 2013
 
Taller de Simpletest - Drupal Day Valencia 2012
Taller de Simpletest - Drupal Day Valencia 2012Taller de Simpletest - Drupal Day Valencia 2012
Taller de Simpletest - Drupal Day Valencia 2012
 
TDD
TDDTDD
TDD
 
Msdn Webcast InyeccióN De Dependencias Con Spring Framework
Msdn Webcast   InyeccióN De Dependencias Con Spring FrameworkMsdn Webcast   InyeccióN De Dependencias Con Spring Framework
Msdn Webcast InyeccióN De Dependencias Con Spring Framework
 
Testing Con Visual Studio Team System 2008
Testing Con Visual Studio Team System 2008Testing Con Visual Studio Team System 2008
Testing Con Visual Studio Team System 2008
 
pruebasunitarias-110921232512-phpapp02.pptx
pruebasunitarias-110921232512-phpapp02.pptxpruebasunitarias-110921232512-phpapp02.pptx
pruebasunitarias-110921232512-phpapp02.pptx
 
Pruebas
PruebasPruebas
Pruebas
 
Pruebas unitarias
Pruebas unitariasPruebas unitarias
Pruebas unitarias
 
Drupal grunt task - Drupal Camp CR 2015
Drupal grunt task  - Drupal Camp CR 2015Drupal grunt task  - Drupal Camp CR 2015
Drupal grunt task - Drupal Camp CR 2015
 
software testing
software testingsoftware testing
software testing
 

Último

TIPOS DE SOPORTES - CLASIFICACION IG.pdf
TIPOS DE SOPORTES - CLASIFICACION IG.pdfTIPOS DE SOPORTES - CLASIFICACION IG.pdf
TIPOS DE SOPORTES - CLASIFICACION IG.pdfssuser202b79
 
Ficha Tecnica de Ladrillos de Tabique de diferentes modelos
Ficha Tecnica de Ladrillos de Tabique de diferentes modelosFicha Tecnica de Ladrillos de Tabique de diferentes modelos
Ficha Tecnica de Ladrillos de Tabique de diferentes modelosRamiroCruzSalazar
 
Análisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdf
Análisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdfAnálisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdf
Análisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdfGabrielCayampiGutier
 
2. Cristaloquimica. ingenieria geologica
2. Cristaloquimica. ingenieria geologica2. Cristaloquimica. ingenieria geologica
2. Cristaloquimica. ingenieria geologicaJUDITHYEMELINHUARIPA
 
Estadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico EcuatorianoEstadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico EcuatorianoEduardoBriones22
 
Matrices Matemáticos universitario pptx
Matrices  Matemáticos universitario pptxMatrices  Matemáticos universitario pptx
Matrices Matemáticos universitario pptxNancyJulcasumaran
 
Quimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfQuimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfs7yl3dr4g0n01
 
Sistema de lubricación para motores de combustión interna
Sistema de lubricación para motores de combustión internaSistema de lubricación para motores de combustión interna
Sistema de lubricación para motores de combustión internamengual57
 
Propuesta para la creación de un Centro de Innovación para la Refundación ...
Propuesta para la creación de un Centro de Innovación para la Refundación ...Propuesta para la creación de un Centro de Innovación para la Refundación ...
Propuesta para la creación de un Centro de Innovación para la Refundación ...Dr. Edwin Hernandez
 
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfLA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfbcondort
 
Sesion 03 Formas de absorcion de agua.pptx
Sesion 03 Formas de absorcion de agua.pptxSesion 03 Formas de absorcion de agua.pptx
Sesion 03 Formas de absorcion de agua.pptxMarcosAlvarezSalinas
 
Minería convencional: datos importantes y conceptos
Minería convencional: datos importantes y conceptosMinería convencional: datos importantes y conceptos
Minería convencional: datos importantes y conceptosisauVillalva
 
Tinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaTinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaAlexanderimanolLencr
 
Lineamientos del Plan Oferta y Demanda sesión 5
Lineamientos del Plan Oferta y Demanda sesión 5Lineamientos del Plan Oferta y Demanda sesión 5
Lineamientos del Plan Oferta y Demanda sesión 5juanjoelaytegonzales2
 
DISEÑO PAVIMENTOS CLASE 06 PAVIMENTOS.pdf
DISEÑO PAVIMENTOS CLASE 06 PAVIMENTOS.pdfDISEÑO PAVIMENTOS CLASE 06 PAVIMENTOS.pdf
DISEÑO PAVIMENTOS CLASE 06 PAVIMENTOS.pdfDaysonMillerAvilesAc1
 
DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJO
DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJODIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJO
DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJOJimyAMoran
 
tesis maíz univesidad catolica santa maria
tesis maíz univesidad catolica santa mariatesis maíz univesidad catolica santa maria
tesis maíz univesidad catolica santa mariasusafy7
 
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptxCALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptxCarlosGabriel96
 
Presentacion de la ganaderia en la región
Presentacion de la ganaderia en la regiónPresentacion de la ganaderia en la región
Presentacion de la ganaderia en la regiónmaz12629
 
Six Sigma Process and the dmaic metodo process
Six Sigma Process and the dmaic metodo processSix Sigma Process and the dmaic metodo process
Six Sigma Process and the dmaic metodo processbarom
 

Último (20)

TIPOS DE SOPORTES - CLASIFICACION IG.pdf
TIPOS DE SOPORTES - CLASIFICACION IG.pdfTIPOS DE SOPORTES - CLASIFICACION IG.pdf
TIPOS DE SOPORTES - CLASIFICACION IG.pdf
 
Ficha Tecnica de Ladrillos de Tabique de diferentes modelos
Ficha Tecnica de Ladrillos de Tabique de diferentes modelosFicha Tecnica de Ladrillos de Tabique de diferentes modelos
Ficha Tecnica de Ladrillos de Tabique de diferentes modelos
 
Análisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdf
Análisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdfAnálisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdf
Análisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdf
 
2. Cristaloquimica. ingenieria geologica
2. Cristaloquimica. ingenieria geologica2. Cristaloquimica. ingenieria geologica
2. Cristaloquimica. ingenieria geologica
 
Estadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico EcuatorianoEstadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico Ecuatoriano
 
Matrices Matemáticos universitario pptx
Matrices  Matemáticos universitario pptxMatrices  Matemáticos universitario pptx
Matrices Matemáticos universitario pptx
 
Quimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfQuimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdf
 
Sistema de lubricación para motores de combustión interna
Sistema de lubricación para motores de combustión internaSistema de lubricación para motores de combustión interna
Sistema de lubricación para motores de combustión interna
 
Propuesta para la creación de un Centro de Innovación para la Refundación ...
Propuesta para la creación de un Centro de Innovación para la Refundación ...Propuesta para la creación de un Centro de Innovación para la Refundación ...
Propuesta para la creación de un Centro de Innovación para la Refundación ...
 
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfLA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
 
Sesion 03 Formas de absorcion de agua.pptx
Sesion 03 Formas de absorcion de agua.pptxSesion 03 Formas de absorcion de agua.pptx
Sesion 03 Formas de absorcion de agua.pptx
 
Minería convencional: datos importantes y conceptos
Minería convencional: datos importantes y conceptosMinería convencional: datos importantes y conceptos
Minería convencional: datos importantes y conceptos
 
Tinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaTinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiología
 
Lineamientos del Plan Oferta y Demanda sesión 5
Lineamientos del Plan Oferta y Demanda sesión 5Lineamientos del Plan Oferta y Demanda sesión 5
Lineamientos del Plan Oferta y Demanda sesión 5
 
DISEÑO PAVIMENTOS CLASE 06 PAVIMENTOS.pdf
DISEÑO PAVIMENTOS CLASE 06 PAVIMENTOS.pdfDISEÑO PAVIMENTOS CLASE 06 PAVIMENTOS.pdf
DISEÑO PAVIMENTOS CLASE 06 PAVIMENTOS.pdf
 
DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJO
DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJODIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJO
DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJO
 
tesis maíz univesidad catolica santa maria
tesis maíz univesidad catolica santa mariatesis maíz univesidad catolica santa maria
tesis maíz univesidad catolica santa maria
 
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptxCALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
 
Presentacion de la ganaderia en la región
Presentacion de la ganaderia en la regiónPresentacion de la ganaderia en la región
Presentacion de la ganaderia en la región
 
Six Sigma Process and the dmaic metodo process
Six Sigma Process and the dmaic metodo processSix Sigma Process and the dmaic metodo process
Six Sigma Process and the dmaic metodo process
 

Framework de test spock