SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Spock Framework Parte 1 Ismael Soares
Spock é um  framework   de testes  para aplicações  Java e Groovy.
Diferenciais JUnit Código bonito Fácil de aprender Altamente expressivo  Utiliza recursos da linguagem Groovy
Quem Usa? Gradle Grails + + +
import  spock . lang .* class   HelloSpock   extends  spock . lang . Specification   {      def   "length of Spock's and his friends' names" ()   {         expect :         name . size ()   ==  length          where :         name      |  length          "Spock“   |   5          "Kirk"     |   4          "Scotty"   |   6      } }                     Exemplo
// Executado antes de cada método def  setup ()   {}            // Executado depois de cada método  def  cleanup ()   {}          // Executado antes do primeiro método def  setupSpec ()   {}       // Executado após o último método def  cleanupSpec ()   {}     Ciclo de vida
[object Object],[object Object],[object Object],[object Object],Fases
Blocos e fases
setup/given:  // criar fixtures  when :     // estímulos then && and :     // respostas cleanup:  // limpar fixtures   Fases
when :”incluir um elemento na pilha” pilha . push ( elemento ) then :”ela não pode ficar vazia” ! pilha . empty pilha . size ()   ==   1   and :”deve conter o elemento incluído” pilha . peek ()   ==  elemento Exemplo
Condition   not  satisfied : pilha . size ()   ==   2 |       |        |     |       1        false [ push me ] Resultado
when :”retirar os elementos de pilha vazia” pilha . pop () then :”deve retornar Exception” def e = thrown ( EmptyStackException ) e.message == ‘bla’ stack . empty Exception
def   "HashMap accepts null key" ()   {   given :“um mapa”    def  map  =   new   HashMap ()       when :”incluir um elemento com a chave null”   map . put ( null ,   "elem" )       then :”não deve retornar exception”   notThrown ( NullPointerException ) } Exception
def   "events are published to all subscribers" ()   {      setup :   def  subscriber1  =   Mock ( Subscriber )    def  subscriber2  =   Mock ( Subscriber )    def  publisher  =   new   Publisher ()   publisher . add ( subscriber1 )   publisher . add ( subscriber2 )       when :   publisher . fire ( "event" )       then :     1 *  subscriber1 . receive ( "event" )    1   *  subscriber2 . receive ( "event" ) //Alternativa (qualquer mock) 2 * _. receive ( "event" ) } Interações
// Global setup : subscriber . isAlive ()   >>   true // Local when :  publisher . send ( event ) then :   1   *  subscriber . receive ( event ) //Válido para o que está acima //Opicional then :  subscriber . isAlive ()   >>   true //Obrigatório then :   1   *  subscriber . isAlive ()   >>   true then :  n  *  subscriber . receive ( event ) //Cardinalidades n  *  subscriber . receive ( event )        // exatamente n vezes ( n .. _ )   *  subscriber . receive ( event )   // as vezes pelo menos n vezes ( _ .. n )   *  subscriber . receive ( event )   // no máximo n vezes //Regex subscriber ./ set .*/( _ )   // qualquer setter que for chamado do subscriber  Interações
// sem argumentos  subscriber . receive ()                // qualquer argumento subscriber . receive ( _ )                     // qualquer argumento não nulo  subscriber . receive (! null )                  // argumento específico subscriber . receive ( event )                 // qualquer argumento diferente do específico  subscriber . receive (! event )                 // qualquer argumento do tipo Message (não nulo) subscriber . receive ( _  as   Message ) // constraint customizada           subscriber . receive (   {  it . priority  >=   5   }   )   Restrições de Argumentos
Para métodos que usam vários argumentos // qualquer três argumentos  mock . foo ( _ ,  _ ,  _ )                      // qualquer argumento no primeiro, não nulo no segundo e no terceiro, uma regex mock . foo ( _ ,   ! null ,   {  it  ==~   / a * b /   })   // restrições para varargs podem ser especificadas em estilo de lista ou estilo vararg: def foo(String... args) // estilo lista  mock . foo ([ "one" ,   "two" ])   // estilo vararg mock . foo ( "one" ,   "two" )   
Na próxima apresentação... Valores de retorno Verificações ordenadas Bloco Expect Bloco Cleanup Bloco Where Métodos Helper Spock Vs JUnit
Referência http://code.google.com/p/spock/
Obrigado

Weitere ähnliche Inhalte

Was ist angesagt?

Introdução ao Framework Grails
Introdução ao Framework GrailsIntrodução ao Framework Grails
Introdução ao Framework Grails
Bruno Catão
 

Was ist angesagt? (20)

A Classe StringBuilder em Java
A Classe StringBuilder em JavaA Classe StringBuilder em Java
A Classe StringBuilder em Java
 
Doctrine2 Seminário PHP
Doctrine2 Seminário PHPDoctrine2 Seminário PHP
Doctrine2 Seminário PHP
 
Threads 07: Sincronizadores
Threads 07: SincronizadoresThreads 07: Sincronizadores
Threads 07: Sincronizadores
 
Node.js - #3 - Global Objects - Rodrigo Branas
Node.js - #3 - Global Objects - Rodrigo BranasNode.js - #3 - Global Objects - Rodrigo Branas
Node.js - #3 - Global Objects - Rodrigo Branas
 
servlet-respostas
servlet-respostasservlet-respostas
servlet-respostas
 
Spring Capitulo 03
Spring Capitulo 03Spring Capitulo 03
Spring Capitulo 03
 
Threads 09: Paralelismo
Threads 09: ParalelismoThreads 09: Paralelismo
Threads 09: Paralelismo
 
Threads 06: Coleções concorrentes
Threads 06: Coleções concorrentesThreads 06: Coleções concorrentes
Threads 06: Coleções concorrentes
 
JavaScript - De verdade
JavaScript - De verdadeJavaScript - De verdade
JavaScript - De verdade
 
Curso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e StreamsCurso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e Streams
 
Threads 08: Executores e Futures
Threads 08: Executores e FuturesThreads 08: Executores e Futures
Threads 08: Executores e Futures
 
Node.js - #2 - Sistema de Módulos - Rodrigo Branas
Node.js - #2 - Sistema de Módulos - Rodrigo BranasNode.js - #2 - Sistema de Módulos - Rodrigo Branas
Node.js - #2 - Sistema de Módulos - Rodrigo Branas
 
Mobileconf dicas-android
Mobileconf dicas-androidMobileconf dicas-android
Mobileconf dicas-android
 
Javascript
JavascriptJavascript
Javascript
 
Threads 05: Travas de Exclusão Mútua
Threads 05: Travas de Exclusão MútuaThreads 05: Travas de Exclusão Mútua
Threads 05: Travas de Exclusão Mútua
 
Gems para colocar seus testes no trilho
Gems para colocar seus testes no trilho Gems para colocar seus testes no trilho
Gems para colocar seus testes no trilho
 
Threads 01: Criação e controle de threads
Threads 01: Criação e controle de threadsThreads 01: Criação e controle de threads
Threads 01: Criação e controle de threads
 
Atualização Java 8 (2014)
Atualização Java 8 (2014)Atualização Java 8 (2014)
Atualização Java 8 (2014)
 
Introdução ao Framework Grails
Introdução ao Framework GrailsIntrodução ao Framework Grails
Introdução ao Framework Grails
 
Golang para desenvolvedores pragmáticos parte 2
Golang para desenvolvedores pragmáticos  parte 2Golang para desenvolvedores pragmáticos  parte 2
Golang para desenvolvedores pragmáticos parte 2
 

Andere mochten auch

Grails/Groovyによる開発事例紹介
Grails/Groovyによる開発事例紹介Grails/Groovyによる開発事例紹介
Grails/Groovyによる開発事例紹介
Kiyotaka Oku
 
Jenkinsプラグインの作り方
Jenkinsプラグインの作り方Jenkinsプラグインの作り方
Jenkinsプラグインの作り方
Kiyotaka Oku
 
Jenkinsプラグイン開発
Jenkinsプラグイン開発Jenkinsプラグイン開発
Jenkinsプラグイン開発
Takahisa Wada
 
function list
function listfunction list
function list
kyon mm
 
レガシーコード改善はじめました 横浜道場
レガシーコード改善はじめました 横浜道場レガシーコード改善はじめました 横浜道場
レガシーコード改善はじめました 横浜道場
Hiroyuki Ohnaka
 
Jenkinsを用いたAndroidアプリビルド作業効率化
Jenkinsを用いたAndroidアプリビルド作業効率化Jenkinsを用いたAndroidアプリビルド作業効率化
Jenkinsを用いたAndroidアプリビルド作業効率化
Kenichi Kambara
 

Andere mochten auch (20)

Androidリリース作業の効率化(2)
Androidリリース作業の効率化(2)Androidリリース作業の効率化(2)
Androidリリース作業の効率化(2)
 
Grails/Groovyによる開発事例紹介
Grails/Groovyによる開発事例紹介Grails/Groovyによる開発事例紹介
Grails/Groovyによる開発事例紹介
 
Jenkins導入ライブ
Jenkins導入ライブJenkins導入ライブ
Jenkins導入ライブ
 
Hands on the Gradle
Hands on the GradleHands on the Gradle
Hands on the Gradle
 
Jenkinsプラグインの作り方
Jenkinsプラグインの作り方Jenkinsプラグインの作り方
Jenkinsプラグインの作り方
 
How about Gradle?
How about Gradle?How about Gradle?
How about Gradle?
 
Jenkinsプラグイン開発
Jenkinsプラグイン開発Jenkinsプラグイン開発
Jenkinsプラグイン開発
 
Gradle a new Generation Build Tool
Gradle a new Generation Build ToolGradle a new Generation Build Tool
Gradle a new Generation Build Tool
 
Testing Web Applications with GEB
Testing Web Applications with GEBTesting Web Applications with GEB
Testing Web Applications with GEB
 
Groovy and Grails in Action - Devoxx 2008 - University - Guillaume Laforge
Groovy and Grails in Action - Devoxx 2008 - University - Guillaume LaforgeGroovy and Grails in Action - Devoxx 2008 - University - Guillaume Laforge
Groovy and Grails in Action - Devoxx 2008 - University - Guillaume Laforge
 
function list
function listfunction list
function list
 
レガシーコード改善はじめました 横浜道場
レガシーコード改善はじめました 横浜道場レガシーコード改善はじめました 横浜道場
レガシーコード改善はじめました 横浜道場
 
Spock: A Highly Logical Way To Test
Spock: A Highly Logical Way To TestSpock: A Highly Logical Way To Test
Spock: A Highly Logical Way To Test
 
GradleによるG*なビルドシステムの構築
GradleによるG*なビルドシステムの構築GradleによるG*なビルドシステムの構築
GradleによるG*なビルドシステムの構築
 
Jenkinsを用いたAndroidアプリビルド作業効率化
Jenkinsを用いたAndroidアプリビルド作業効率化Jenkinsを用いたAndroidアプリビルド作業効率化
Jenkinsを用いたAndroidアプリビルド作業効率化
 
Groovy Testing Aug2009
Groovy Testing Aug2009Groovy Testing Aug2009
Groovy Testing Aug2009
 
AgileJapan2010 基調講演:野中郁次郎先生による「実践知のリーダシップ~スクラムと知の場作り」
AgileJapan2010 基調講演:野中郁次郎先生による「実践知のリーダシップ~スクラムと知の場作り」AgileJapan2010 基調講演:野中郁次郎先生による「実践知のリーダシップ~スクラムと知の場作り」
AgileJapan2010 基調講演:野中郁次郎先生による「実践知のリーダシップ~スクラムと知の場作り」
 
The outlineoftestprocess
The outlineoftestprocessThe outlineoftestprocess
The outlineoftestprocess
 
Spockを使おう!
Spockを使おう!Spockを使おう!
Spockを使おう!
 
Gradle talk, Javarsovia 2010
Gradle talk, Javarsovia 2010Gradle talk, Javarsovia 2010
Gradle talk, Javarsovia 2010
 

Ähnlich wie Spock Framework

Aop Aspect J 1.5.4 Capitulo 04
Aop Aspect J 1.5.4 Capitulo 04Aop Aspect J 1.5.4 Capitulo 04
Aop Aspect J 1.5.4 Capitulo 04
Diego Pacheco
 
Javascript para CSharpers 2 - Functions
Javascript para CSharpers   2 - FunctionsJavascript para CSharpers   2 - Functions
Javascript para CSharpers 2 - Functions
Wesley Lemos
 
LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09
Carlos Santos
 

Ähnlich wie Spock Framework (20)

Aula5
Aula5Aula5
Aula5
 
OOP ObjC
OOP ObjCOOP ObjC
OOP ObjC
 
Aop Aspect J 1.5.4 Capitulo 04
Aop Aspect J 1.5.4 Capitulo 04Aop Aspect J 1.5.4 Capitulo 04
Aop Aspect J 1.5.4 Capitulo 04
 
Javascript avançado
Javascript avançadoJavascript avançado
Javascript avançado
 
Aprendendo objective c - parte 1
Aprendendo objective c - parte 1Aprendendo objective c - parte 1
Aprendendo objective c - parte 1
 
ESTRUTURA DE DADOS (JAVA) AULA 09
ESTRUTURA DE DADOS (JAVA) AULA 09ESTRUTURA DE DADOS (JAVA) AULA 09
ESTRUTURA DE DADOS (JAVA) AULA 09
 
Threads e Estruturas de dados
Threads e Estruturas de dadosThreads e Estruturas de dados
Threads e Estruturas de dados
 
Algoritmos de ordenação
Algoritmos de ordenaçãoAlgoritmos de ordenação
Algoritmos de ordenação
 
Turbinando o desenvolvimento Android com Kotlin
Turbinando o desenvolvimento Android com KotlinTurbinando o desenvolvimento Android com Kotlin
Turbinando o desenvolvimento Android com Kotlin
 
Javascript para CSharpers 2 - Functions
Javascript para CSharpers   2 - FunctionsJavascript para CSharpers   2 - Functions
Javascript para CSharpers 2 - Functions
 
LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09
 
Refatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completaRefatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completa
 
Design patterns
Design patternsDesign patterns
Design patterns
 
JS Experience 2017 - Javascript Funcional
JS Experience 2017 - Javascript FuncionalJS Experience 2017 - Javascript Funcional
JS Experience 2017 - Javascript Funcional
 
4º Aula do Grupo de estudos sobre funções
4º Aula do Grupo de estudos sobre funções4º Aula do Grupo de estudos sobre funções
4º Aula do Grupo de estudos sobre funções
 
Evento Front End SP - Organizando o Javascript
 Evento Front End SP - Organizando o Javascript Evento Front End SP - Organizando o Javascript
Evento Front End SP - Organizando o Javascript
 
Java hidden features
Java hidden featuresJava hidden features
Java hidden features
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 
Leonardo Zamariola - High Order Functions e Functional Interfaces
Leonardo Zamariola - High Order Functions e Functional InterfacesLeonardo Zamariola - High Order Functions e Functional Interfaces
Leonardo Zamariola - High Order Functions e Functional Interfaces
 
Introdução à programação em Android e iOS - OOP em ObjC
Introdução à programação em Android e iOS - OOP em ObjCIntrodução à programação em Android e iOS - OOP em ObjC
Introdução à programação em Android e iOS - OOP em ObjC
 

Mehr von Ismael

Mehr von Ismael (20)

TDC 2020 - Trilha de Management 3.0 e Gestão Ágil
TDC 2020 - Trilha de Management 3.0 e Gestão ÁgilTDC 2020 - Trilha de Management 3.0 e Gestão Ágil
TDC 2020 - Trilha de Management 3.0 e Gestão Ágil
 
Introducao ao Pensamento Sistemico
Introducao ao Pensamento SistemicoIntroducao ao Pensamento Sistemico
Introducao ao Pensamento Sistemico
 
Testes de unidade alem do basico
Testes de unidade alem do basicoTestes de unidade alem do basico
Testes de unidade alem do basico
 
Bluesoft Culture
Bluesoft CultureBluesoft Culture
Bluesoft Culture
 
Como dar e receber feedbacks
Como dar e receber feedbacksComo dar e receber feedbacks
Como dar e receber feedbacks
 
Eficiencia de fluxo
Eficiencia de fluxoEficiencia de fluxo
Eficiencia de fluxo
 
Como você testa seu software TDC 2017
Como você testa seu software  TDC 2017Como você testa seu software  TDC 2017
Como você testa seu software TDC 2017
 
Como ter Entregas Frequentes
Como ter Entregas FrequentesComo ter Entregas Frequentes
Como ter Entregas Frequentes
 
JUnit 5 vs JUnit 4
JUnit 5 vs JUnit 4JUnit 5 vs JUnit 4
JUnit 5 vs JUnit 4
 
Conceitos por trás do Ágil
Conceitos por trás do ÁgilConceitos por trás do Ágil
Conceitos por trás do Ágil
 
Boas Praticas de Testes, Bad Smell e Outros Macetes
Boas Praticas de Testes, Bad Smell e Outros MacetesBoas Praticas de Testes, Bad Smell e Outros Macetes
Boas Praticas de Testes, Bad Smell e Outros Macetes
 
8 passos para mudança de John Kotter
8 passos para mudança de John Kotter8 passos para mudança de John Kotter
8 passos para mudança de John Kotter
 
Curva da Mudança Kubler-Ross
Curva da Mudança Kubler-RossCurva da Mudança Kubler-Ross
Curva da Mudança Kubler-Ross
 
DevCamp 2016
DevCamp 2016DevCamp 2016
DevCamp 2016
 
7 Caracteristicas de um bom Lider Agil
7 Caracteristicas de um bom Lider Agil7 Caracteristicas de um bom Lider Agil
7 Caracteristicas de um bom Lider Agil
 
Law of demeter
Law of demeterLaw of demeter
Law of demeter
 
Junit Lambda
Junit LambdaJunit Lambda
Junit Lambda
 
Feedback dos Testes
Feedback dos TestesFeedback dos Testes
Feedback dos Testes
 
Refactoring Databases - Estrategias
Refactoring Databases - EstrategiasRefactoring Databases - Estrategias
Refactoring Databases - Estrategias
 
Refactoring Databases - parte 1
Refactoring Databases - parte 1Refactoring Databases - parte 1
Refactoring Databases - parte 1
 

Kürzlich hochgeladen

Kürzlich hochgeladen (8)

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 

Spock Framework

  • 1. Spock Framework Parte 1 Ismael Soares
  • 2. Spock é um framework de testes para aplicações Java e Groovy.
  • 3. Diferenciais JUnit Código bonito Fácil de aprender Altamente expressivo Utiliza recursos da linguagem Groovy
  • 4. Quem Usa? Gradle Grails + + +
  • 5. import spock . lang .* class HelloSpock extends spock . lang . Specification {     def "length of Spock's and his friends' names" () {         expect :         name . size () == length         where :         name     | length         "Spock“ | 5         "Kirk"   | 4         "Scotty" | 6     } } Exemplo
  • 6. // Executado antes de cada método def setup () {}           // Executado depois de cada método def cleanup () {}         // Executado antes do primeiro método def setupSpec () {}     // Executado após o último método def cleanupSpec () {}   Ciclo de vida
  • 7.
  • 9. setup/given: // criar fixtures when :   // estímulos then && and :   // respostas cleanup: // limpar fixtures Fases
  • 10. when :”incluir um elemento na pilha” pilha . push ( elemento ) then :”ela não pode ficar vazia” ! pilha . empty pilha . size () == 1 and :”deve conter o elemento incluído” pilha . peek () == elemento Exemplo
  • 11. Condition not satisfied : pilha . size () == 2 |     |       |   |     1       false [ push me ] Resultado
  • 12. when :”retirar os elementos de pilha vazia” pilha . pop () then :”deve retornar Exception” def e = thrown ( EmptyStackException ) e.message == ‘bla’ stack . empty Exception
  • 13. def "HashMap accepts null key" () {   given :“um mapa”   def map = new HashMap ()     when :”incluir um elemento com a chave null”   map . put ( null , "elem" )     then :”não deve retornar exception”   notThrown ( NullPointerException ) } Exception
  • 14. def "events are published to all subscribers" () {   setup : def subscriber1 = Mock ( Subscriber )   def subscriber2 = Mock ( Subscriber )   def publisher = new Publisher ()   publisher . add ( subscriber1 )   publisher . add ( subscriber2 )     when :   publisher . fire ( "event" )     then :   1 * subscriber1 . receive ( "event" )   1 * subscriber2 . receive ( "event" ) //Alternativa (qualquer mock) 2 * _. receive ( "event" ) } Interações
  • 15. // Global setup : subscriber . isAlive () >> true // Local when : publisher . send ( event ) then : 1 * subscriber . receive ( event ) //Válido para o que está acima //Opicional then : subscriber . isAlive () >> true //Obrigatório then : 1 * subscriber . isAlive () >> true then : n * subscriber . receive ( event ) //Cardinalidades n * subscriber . receive ( event )       // exatamente n vezes ( n .. _ ) * subscriber . receive ( event ) // as vezes pelo menos n vezes ( _ .. n ) * subscriber . receive ( event ) // no máximo n vezes //Regex subscriber ./ set .*/( _ ) // qualquer setter que for chamado do subscriber Interações
  • 16. // sem argumentos subscriber . receive ()             // qualquer argumento subscriber . receive ( _ )                   // qualquer argumento não nulo subscriber . receive (! null )                 // argumento específico subscriber . receive ( event )               // qualquer argumento diferente do específico subscriber . receive (! event )               // qualquer argumento do tipo Message (não nulo) subscriber . receive ( _ as Message ) // constraint customizada         subscriber . receive ( { it . priority >= 5 } ) Restrições de Argumentos
  • 17. Para métodos que usam vários argumentos // qualquer três argumentos mock . foo ( _ , _ , _ )                     // qualquer argumento no primeiro, não nulo no segundo e no terceiro, uma regex mock . foo ( _ , ! null , { it ==~ / a * b / }) // restrições para varargs podem ser especificadas em estilo de lista ou estilo vararg: def foo(String... args) // estilo lista mock . foo ([ "one" , "two" ]) // estilo vararg mock . foo ( "one" , "two" )  
  • 18. Na próxima apresentação... Valores de retorno Verificações ordenadas Bloco Expect Bloco Cleanup Bloco Where Métodos Helper Spock Vs JUnit

Hinweis der Redaktion

  1. Altamente expressivo: escrevemos o código da mesma forma que fariamos para nos expressar. JUnit: compatível com diversas IDEs, ferramentas de build e testes de integração contínua.
  2. Gradle (grueilou): trata-se de um sistema de build baseado em Groovy que trás a expressividade desta linguagem para o mecanismo de build, o que torna nossos scripts muito mais legíveis e fáceis de escrever.
  3. Spock tem suporte embutido para a execução de cada uma das fases conceituais de um método. Para este fim, métodos são estruturados em blocos.
  4. Frases nos blocos são opcionais: As condições são escritas como expressões booleana ssimples, eliminando a necessidade de uma afirmação API.
  5. Como você pode ver, Spock captura todos os valores produzidos durante a avaliação de uma condição, e apresenta-os numa forma facilmente de entender.
  6. Clique 2 vezes Eventos são publicados para todos os assinantes subscriber: assinantes Publisher: editora Receive: ruecive (receber)