SlideShare uma empresa Scribd logo
1 de 25
[object Object],[object Object]
[object Object]
[object Object],public   class  Programa { public   static   void  executa() { BancoDeDados bd =  new  BancoDeDados(); EnviadorDeEmail enviador =  new  EnviadorDeEmail(); Usuario usuario = Usuario. getAtual (); if  (bd.autentica(usuario)) { enviador.enviaEmail(usuario); } } }
[object Object]
[object Object],public   class  Mecanico { public  Mecanico(ChaveDeFenda fenda, ChaveInglesa inglesa, CalendarioPorno calendario) { ... } public   void  trocaMotor(Carro carro) { try  { Motor motor = carro.getMotor(); fenda .remove(motor); }  catch  (TopadaNoDedaoException e) { xingaMuitoNoTwitter(e); } } }
[object Object]
[object Object],ChaveDeFenda fenda =  vaiNaCaixaEBuscaAChaveDeFenda (); ChaveInglesa inglesa =  vaiNaCaixaEBuscaAChaveInglesa (); CalendarioPorno calendario =  vaiNaLojaECompraOCalendario ();  Mecanico mecanico =  new  Mecanico(fenda, inglesa, calendario); //resto do teste...
[object Object]
[object Object],ChaveDeFenda fenda =  mock ( ChaveDeFenda.class ); ChaveInglesa inglesa =  mock ( ChaveInglesa.class ); CalendarioPorno calendario =  mock ( CalendarioPorno.class );  Mecanico mecanico =  new  Mecanico(fenda, inglesa, calendario); // resto do teste...
[object Object],[object Object]
[object Object],public   class  LancadorTest { public   void  testDispara() { // coisas complicadas } }
[object Object],public   class  LancadorTest { public   void  disparaMisseisQuandoUmAtaqueNuclearForDetectado(){ // coisas escabrosas } } X
[object Object],public   void  testEnaganaOCliente() { Parafuseta parafuseta =  new  Parafuseta( new  Estepe()); List<Cavalo> cavalos = Collections. nCopies (123,  new  Cavalo(Cor.BRANCO)); parafuseta.setMotor( new  Motor(cavalos)); Peca rebimbocaDaParafuseta =  new  Rebimboca(parafuseta); Cliente cliente = mockery.mock(Cliente. class ); mockery.checking( new  Expectations() {{ one(cliente).recebePreco(Double. MAX_VALUE ); one(cliente).recebePreco(Double. MAX_VALUE  / 2); one(cliente).naoTemUmJeitinho( true ); one(cliente).recebePreco(1.99d); }}); Mecanico mecanico =  new  Mecanico(); mecanico.forneceOrcamento(rebimbocaDaParafuseta, cliente); }
[object Object],public   void  testEnganaOCliente() { Cliente cliente = mockery.mock(Cliente. class ); esperandoNegociacao(cliente); mecanico.forneceOrcamento(umaPecaInventada(), cliente); } public   void  esperandoNegociacao(Cliente cliente) { mockery.checking( new  Expectations() {{ one(cliente).recebePreco(Double. MAX_VALUE ); one(cliente).recebePreco(Double. MAX_VALUE  / 2); one(cliente).naoTemUmJeitinho( true ); one(cliente).recebePreco(1.99d); }}); } public  Peca umaPecaInventada() { Parafuseta parafuseta =  new  Parafuseta( new  Estepe()); List<Cavalo> cavalos = Collections. nCopies (123,  new  Cavalo(Color.BRANCO)); parafuseta.setMotor( new  Motor(cavalos)); return   new  Rebimboca(parafuseta); } X
[object Object],public   void  disparaMisseisNuclearesQuandoAtaqueForDetectado() { DetectorAereo detectorAereo =  mock (DetectorAereo. class ); DetectorDeSubmarino detectorDeSubmarino =  mock (DetectorDeS... ComandoRemoto comandoRemoto =  mock (ComandoRemoto. class ); SensorDePopularidade sensorDePopularidade =  mock (SensorDePo... Gps gpsDoBinLaden =  mock (Gps. class ); Rebimboca rebimbocaDaParafuseta =  mock (Rebimboca. class ); Lancador lancador =  new  Lancador(detectorAereo, detectorDeSubmarino, c omandoRemoto,  sensorDePopularidade, gpsDoBinLaden, rebimbocaDaParafuseta); // coisas cabeludas... }
[object Object],public   void  disparaMisseisNuclearesQuandoAtaqueForDetectado() { DetectorDeAtaque detectorDeAtaque =  mock (DetectorDeAtaque... Rebimboca rebimbocaDaParafuseta =  mock (Rebimboca. class ); Lancador lancador =  new  Lancador(detectorDeAtaque, rebimbocaDaParafuseta); // coisas do arco da velha... } X
[object Object],public   class  Pedido { private   static   final   int   TRES_HORAS  = 3*60*60*1000; private  Date  dataDeCriacao  =  new  Date(); public   boolean  isExpirado() { long  agora = System. currentTimeMillis (); return  agora -  dataDeCriacao .getTime() <  TRES_HORAS ;  } } public   void  testaSeEstaExpiradoDepoisDeTresHoras()  throws  Exception { Pedido pedido =  new  Pedido(); Thread. sleep ( TRES_HORAS );  //?! assertTrue (pedido.isExpirado()); }
[object Object],public   class  Pedido { private   final  Date  dataDeCriacao ; public  Pedido(Relogio relogio) {   this . dataDeCriacao  = relogio.agora(); } public   boolean  isExpirado(Date data) { return  data.getTime() -  dataDeCriacao .getTime() <  TRES_HORAS ; } } public   void  testaSeEstaExpiradoDepoisDeTresHoras() { final  Relogio relogio =  mockery .mock(Relogio. class ); mockery .checking( new  Expectations() {{ one(relogio).agora(); will(returnValue( tresHorasAtras()) ; }}); Pedido pedido =  new  Pedido(relogio); assertTrue (pedido.isExpirado( agora ())); } X
[object Object],@Test public   void  enviaEmailDeSenha() { Usuario usuario =  new  Usuario(); mockery.checking( new  Expectations() {{ one(dao).buscaUsuario(1); one(template).compoeEmailDeSenha(usuario); one(configuracao).servidorSmtp(); one(enviadorDeEmail).envia(servidor, email, usuario); }}); controller.enviaEmailDeSenha(1); }
[object Object],@Test public   void  enviaEmailDeSenha() { Usuario usuario =  new  Usuario(); mockery.checking( new  Expectations() {{ one(enviadorDeEmail).envia(servidor, email, usuario); }}); controller.enviaEmailDeSenha(1); } @Before public   void  setUp() { mockery .checking( new  Expectations() { { allowing(dao).buscaUsuario(1); allowing(template).compoeEmailDeSenha(usuario); allowing(configuracao).servidorSmtp(); }}); } X
[object Object]
[object Object]
[object Object],[object Object]
@Test public   void  shouldRollbackActiveTransactions(){ given ( transaction .isActive()).willReturn( true ); manager .persist( ANY_ENTITY ); verify ( transaction ).rollback(); } Given When Then
[object Object],[object Object]

Mais conteúdo relacionado

Mais procurados

Spock Framework 2
Spock Framework 2Spock Framework 2
Spock Framework 2Ismael
 
[Curso Java Basico - Exceptions] Aula 50: stacktrace e throws
[Curso Java Basico - Exceptions] Aula 50: stacktrace e throws[Curso Java Basico - Exceptions] Aula 50: stacktrace e throws
[Curso Java Basico - Exceptions] Aula 50: stacktrace e throwsLoiane Groner
 
[Curso Java Basico - Exceptions] Aula 49: finally
[Curso Java Basico - Exceptions] Aula 49: finally[Curso Java Basico - Exceptions] Aula 49: finally
[Curso Java Basico - Exceptions] Aula 49: finallyLoiane Groner
 
[Curso Java Basico - Exceptions] Aula 47: try, catch
[Curso Java Basico - Exceptions] Aula 47: try, catch[Curso Java Basico - Exceptions] Aula 47: try, catch
[Curso Java Basico - Exceptions] Aula 47: try, catchLoiane Groner
 
Java aprendendo linguagem.ppt
Java aprendendo linguagem.pptJava aprendendo linguagem.ppt
Java aprendendo linguagem.pptEmerson Cardoso
 
[Curso Java Basico - Orientacao a Objetos] Aula 34: Variáveis e metodos estat...
[Curso Java Basico - Orientacao a Objetos] Aula 34: Variáveis e metodos estat...[Curso Java Basico - Orientacao a Objetos] Aula 34: Variáveis e metodos estat...
[Curso Java Basico - Orientacao a Objetos] Aula 34: Variáveis e metodos estat...Loiane Groner
 
Java - Introdução a Coleções e Generics
Java - Introdução a Coleções e GenericsJava - Introdução a Coleções e Generics
Java - Introdução a Coleções e GenericsSérgio Souza Costa
 
Node.js - #4 - Timers - Rodrigo Branas
Node.js - #4 - Timers - Rodrigo BranasNode.js - #4 - Timers - Rodrigo Branas
Node.js - #4 - Timers - Rodrigo BranasRodrigo Branas
 
Ajax O Objeto Xml Http Request Parte 3
Ajax   O Objeto Xml Http Request   Parte 3Ajax   O Objeto Xml Http Request   Parte 3
Ajax O Objeto Xml Http Request Parte 3infinitopublicidade
 
Java Básico - Resolução
Java Básico - ResoluçãoJava Básico - Resolução
Java Básico - ResoluçãoAndré Salla
 
[Curso Java Basico - Exceptions] Aula 48: multiplos catch
[Curso Java Basico - Exceptions] Aula 48: multiplos catch[Curso Java Basico - Exceptions] Aula 48: multiplos catch
[Curso Java Basico - Exceptions] Aula 48: multiplos catchLoiane Groner
 
Curso de Shell Script 10/11
Curso de Shell Script 10/11Curso de Shell Script 10/11
Curso de Shell Script 10/11Rodrigo Silva
 
Lidando com desafios dos microserviços com a stack Spring Cloud Netflix
Lidando com desafios dos microserviços com a stack Spring Cloud NetflixLidando com desafios dos microserviços com a stack Spring Cloud Netflix
Lidando com desafios dos microserviços com a stack Spring Cloud NetflixEmmanuel Neri
 
Javascript para CSharpers 2 - Functions
Javascript para CSharpers   2 - FunctionsJavascript para CSharpers   2 - Functions
Javascript para CSharpers 2 - FunctionsWesley Lemos
 
Node.js - #5 - Process - Rodrigo Branas
Node.js - #5 - Process - Rodrigo BranasNode.js - #5 - Process - Rodrigo Branas
Node.js - #5 - Process - Rodrigo BranasRodrigo Branas
 
Aula5 introducao c
Aula5 introducao cAula5 introducao c
Aula5 introducao cprofwtelles
 
Introdução à linguagem c
Introdução à linguagem cIntrodução à linguagem c
Introdução à linguagem cRafael_Lima87
 

Mais procurados (20)

Spock Framework 2
Spock Framework 2Spock Framework 2
Spock Framework 2
 
[Curso Java Basico - Exceptions] Aula 50: stacktrace e throws
[Curso Java Basico - Exceptions] Aula 50: stacktrace e throws[Curso Java Basico - Exceptions] Aula 50: stacktrace e throws
[Curso Java Basico - Exceptions] Aula 50: stacktrace e throws
 
[Curso Java Basico - Exceptions] Aula 49: finally
[Curso Java Basico - Exceptions] Aula 49: finally[Curso Java Basico - Exceptions] Aula 49: finally
[Curso Java Basico - Exceptions] Aula 49: finally
 
[Curso Java Basico - Exceptions] Aula 47: try, catch
[Curso Java Basico - Exceptions] Aula 47: try, catch[Curso Java Basico - Exceptions] Aula 47: try, catch
[Curso Java Basico - Exceptions] Aula 47: try, catch
 
Curso de Node JS Básico
Curso de Node JS BásicoCurso de Node JS Básico
Curso de Node JS Básico
 
Java aprendendo linguagem.ppt
Java aprendendo linguagem.pptJava aprendendo linguagem.ppt
Java aprendendo linguagem.ppt
 
[Curso Java Basico - Orientacao a Objetos] Aula 34: Variáveis e metodos estat...
[Curso Java Basico - Orientacao a Objetos] Aula 34: Variáveis e metodos estat...[Curso Java Basico - Orientacao a Objetos] Aula 34: Variáveis e metodos estat...
[Curso Java Basico - Orientacao a Objetos] Aula 34: Variáveis e metodos estat...
 
BDD com Rails
BDD com RailsBDD com Rails
BDD com Rails
 
Java - Introdução a Coleções e Generics
Java - Introdução a Coleções e GenericsJava - Introdução a Coleções e Generics
Java - Introdução a Coleções e Generics
 
Node.js - #4 - Timers - Rodrigo Branas
Node.js - #4 - Timers - Rodrigo BranasNode.js - #4 - Timers - Rodrigo Branas
Node.js - #4 - Timers - Rodrigo Branas
 
Ajax O Objeto Xml Http Request Parte 3
Ajax   O Objeto Xml Http Request   Parte 3Ajax   O Objeto Xml Http Request   Parte 3
Ajax O Objeto Xml Http Request Parte 3
 
Java Básico - Resolução
Java Básico - ResoluçãoJava Básico - Resolução
Java Básico - Resolução
 
[Curso Java Basico - Exceptions] Aula 48: multiplos catch
[Curso Java Basico - Exceptions] Aula 48: multiplos catch[Curso Java Basico - Exceptions] Aula 48: multiplos catch
[Curso Java Basico - Exceptions] Aula 48: multiplos catch
 
Curso de Shell Script 10/11
Curso de Shell Script 10/11Curso de Shell Script 10/11
Curso de Shell Script 10/11
 
Lidando com desafios dos microserviços com a stack Spring Cloud Netflix
Lidando com desafios dos microserviços com a stack Spring Cloud NetflixLidando com desafios dos microserviços com a stack Spring Cloud Netflix
Lidando com desafios dos microserviços com a stack Spring Cloud Netflix
 
Javascript para CSharpers 2 - Functions
Javascript para CSharpers   2 - FunctionsJavascript para CSharpers   2 - Functions
Javascript para CSharpers 2 - Functions
 
Node.js - #5 - Process - Rodrigo Branas
Node.js - #5 - Process - Rodrigo BranasNode.js - #5 - Process - Rodrigo Branas
Node.js - #5 - Process - Rodrigo Branas
 
Aula5 introducao c
Aula5 introducao cAula5 introducao c
Aula5 introducao c
 
Aula5 introducao c
Aula5 introducao cAula5 introducao c
Aula5 introducao c
 
Introdução à linguagem c
Introdução à linguagem cIntrodução à linguagem c
Introdução à linguagem c
 

Semelhante a Testando com Mocks

Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitDiego Tremper
 
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 completaEduardo Bregaida
 
Conexão Java 2012 - Orientação a Objetos das Galáxias
Conexão Java 2012 - Orientação a Objetos das GaláxiasConexão Java 2012 - Orientação a Objetos das Galáxias
Conexão Java 2012 - Orientação a Objetos das GaláxiasMaurício Aniche
 
Exercícios java 20 02
Exercícios java 20   02Exercícios java 20   02
Exercícios java 20 02julyesersantos
 
Aula actionscript basico
Aula actionscript basicoAula actionscript basico
Aula actionscript basicoWemerson Silva
 
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...Tchelinux
 
Testes de Unidade com JUnit
Testes de Unidade com JUnitTestes de Unidade com JUnit
Testes de Unidade com JUnitelliando dias
 
Pós Ruy - 2 e 3 Camadas - Teste de componentes
Pós Ruy - 2 e 3 Camadas - Teste de componentesPós Ruy - 2 e 3 Camadas - Teste de componentes
Pós Ruy - 2 e 3 Camadas - Teste de componentesCleverson Sacramento
 
Teste unitário
Teste unitárioTeste unitário
Teste unitáriodist_bp
 
Como conectar programas em linguagem java a bases de dados
Como conectar programas em linguagem java  a bases de dadosComo conectar programas em linguagem java  a bases de dados
Como conectar programas em linguagem java a bases de dadosHenrique Fernandes
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Androidtdc-globalcode
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Androidtdc-globalcode
 
Como escrever bons testes! - Dex transforming days
Como escrever bons testes! - Dex transforming days Como escrever bons testes! - Dex transforming days
Como escrever bons testes! - Dex transforming days Danilo Pereira De Luca
 
Test-Driven Development e sua influência no design
Test-Driven Development e sua influência no designTest-Driven Development e sua influência no design
Test-Driven Development e sua influência no designMaurício Aniche
 

Semelhante a Testando com Mocks (20)

Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnit
 
Mock Objects
Mock ObjectsMock Objects
Mock Objects
 
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
 
Conexão Java 2012 - Orientação a Objetos das Galáxias
Conexão Java 2012 - Orientação a Objetos das GaláxiasConexão Java 2012 - Orientação a Objetos das Galáxias
Conexão Java 2012 - Orientação a Objetos das Galáxias
 
Java hidden features
Java hidden featuresJava hidden features
Java hidden features
 
Exercícios java 20 02
Exercícios java 20   02Exercícios java 20   02
Exercícios java 20 02
 
Java hidden features
Java hidden featuresJava hidden features
Java hidden features
 
Aula actionscript basico
Aula actionscript basicoAula actionscript basico
Aula actionscript basico
 
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
 
Testes de Unidade com JUnit
Testes de Unidade com JUnitTestes de Unidade com JUnit
Testes de Unidade com JUnit
 
Dip the dependency inversion principle
Dip   the dependency inversion principleDip   the dependency inversion principle
Dip the dependency inversion principle
 
Dip the dependency inversion principle
Dip   the dependency inversion principleDip   the dependency inversion principle
Dip the dependency inversion principle
 
Pós Ruy - 2 e 3 Camadas - Teste de componentes
Pós Ruy - 2 e 3 Camadas - Teste de componentesPós Ruy - 2 e 3 Camadas - Teste de componentes
Pós Ruy - 2 e 3 Camadas - Teste de componentes
 
Teste unitário
Teste unitárioTeste unitário
Teste unitário
 
Como conectar programas em linguagem java a bases de dados
Como conectar programas em linguagem java  a bases de dadosComo conectar programas em linguagem java  a bases de dados
Como conectar programas em linguagem java a bases de dados
 
Java 06
Java 06Java 06
Java 06
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Android
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Android
 
Como escrever bons testes! - Dex transforming days
Como escrever bons testes! - Dex transforming days Como escrever bons testes! - Dex transforming days
Como escrever bons testes! - Dex transforming days
 
Test-Driven Development e sua influência no design
Test-Driven Development e sua influência no designTest-Driven Development e sua influência no design
Test-Driven Development e sua influência no design
 

Testando com Mocks

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24. @Test public void shouldRollbackActiveTransactions(){ given ( transaction .isActive()).willReturn( true ); manager .persist( ANY_ENTITY ); verify ( transaction ).rollback(); } Given When Then
  • 25.