Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

BDD com Easyb

2,386 views

Published on

Conheça uma das ferramentas de BDD mais utilizada pela comunidade Java. Easyb recebeu este posto pela sua simplicidade e objetividade na escrita de testes.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

BDD com Easyb

  1. 1. BDD com EasyB Por Ismael Soares
  2. 2. http://www.easyb.org/
  3. 3. Simplesmente descomplicado
  4. 4. Fácil de aprender Características Utiliza linguaguem dinâmica (Groovy) Possui dois formatos para escrita de código (Stories e Specifications) Relatórios HTML usando Maven Plugin para o Eclipse
  5. 5. Maven < dependency > < groupId > org.easyb </ groupId > < artifactId > easyb-maven-plugin </ artifactId > < version > 0.9.7-1 </ version > </ dependency >
  6. 6. Triste notícia….
  7. 7. Mas nem tudo está perdido….
  8. 8. Plugin para Eclipse
  9. 9. Exemplo com Estória do Usuário
  10. 10. Definição do formato
  11. 11. <ul><li>//Descri ç ão do teste (opcional) </li></ul><ul><li>description &quot;Cliente faz saque &quot; </li></ul><ul><li>//Narrativa da est ó ria (opcional) </li></ul><ul><li>2. narrative 'Saque de Cliente' , { </li></ul><ul><li>3. as_a 'cliente' </li></ul><ul><li>4. i_want 'de sacar dinheiro em caixa eletrônico' </li></ul><ul><li>5. so_that 'eu não tenha que esperar numa fila de banco' </li></ul><ul><li>6. } </li></ul><ul><li>//M é todo que ser á executado antes de cada cen á rio </li></ul><ul><li>//Instancia o cliente e cria a vari á vel que ir á armazenar o retorno do saque </li></ul><ul><li>7. before_each &quot;&quot; ,{ </li></ul><ul><li>8. given &quot;um cliente&quot; ,{ </li></ul><ul><li>9. cliente = new Cliente() </li></ul><ul><li>10. saqueEfetuado = false </li></ul><ul><li>11. } </li></ul><ul><li>12. } </li></ul><ul><li>//Primeiro Cen á rio </li></ul><ul><li>13. scenario &quot;cliente especial com saldo negativo&quot; ,{ </li></ul><ul><ul><li>14. given &quot;um cliente especial com saldo atual de -200 reais&quot; ,{ </li></ul></ul><ul><ul><li>15. cliente.saldoAtual = -200; </li></ul></ul><ul><ul><li>16. cliente.clienteEspecial(); </li></ul></ul><ul><ul><li>17. } </li></ul></ul><ul><ul><li>18. when &quot;for solicitado um saque no valor de 100 reais&quot; , { </li></ul></ul><ul><ul><li>19. saqueEfetuado = cliente.sacar(100); </li></ul></ul><ul><ul><li>20. } </li></ul></ul><ul><ul><li>21. then &quot;deve efetuar o saque e atualizar o saldo da conta para -300 reais&quot; , { </li></ul></ul><ul><ul><li>22. saqueEfetuado.shouldBe true </li></ul></ul><ul><ul><li>23. (cliente.saldoAtual == -300).shouldBe true </li></ul></ul><ul><ul><li>24. } </li></ul></ul><ul><li>25. } </li></ul>CaixaEletronicoTest.story
  12. 12. //Segundo Cen á rio 26. scenario &quot;cliente comum com saldo negativo&quot; ,{ 27. given &quot;um cliente comum com saldo atual de -300 reais&quot; ,{ 28. cliente.saldoAtual = -300; 29. cliente.clienteComum(); 30. } 31. when &quot;for solicitado um saque no valor de 200 reais&quot; , { 32. try { 33. cliente.sacar(200) 34. } catch (Exception e) { 35. msg = e.message 36. } 37. } 38. then &quot;não deve efetuar o saque&quot; , { 39. saqueEfetuado.shouldBe false } 41. and &quot;deve retornar a mensagem Saldo Insuficiente&quot; ,{ 42. msg.shouldBe 'Saldo Insuficiente' 43. } 43. } CaixaEletronicoTest.story
  13. 13. 1. description &quot;Testando uma pilha&quot; 2. before &quot;inicializa a fila para cada especifica ç ão&quot; , { 3. pilha = new Stack<Integer>() 4. } 5. it &quot;deve possuir apenas 1 elemento&quot; , { 6. pilha. push (2) 7. pilha. size ().shouldBe(1) 8. } 9. it &quot;deve retornar uma exception quando for retirado um elemento da pilha vazia&quot; , { 10. ensureThrows (Exception. class ) { 11. pilha. pop () } 13. } 14. it &quot;deve empilhar e desempilhar os elementos na mesma ordem&quot; , { 15. [1..5]. each {val -> 16. pilha. push (val) 17. } 18. [1..5]. each {val -> 19. pilha. pop ().shouldBe(val) 20. } 21 } CaixaEletronicoTest.specification
  14. 14. Executando com Maven
  15. 15. Relatório HTML
  16. 16. Plugin do Maven para gerar relatórios < build > < plugins > < plugin > < groupId > org.easyb </ groupId > < artifactId > maven-easyb-plugin </ artifactId > < version > 0.9.7-1 </ version > < executions > < execution > < goals > < goal > test </ goal > </ goals > </ execution > </ executions > < configuration > < storyType > html </ storyType > < storyReport > ${project.build.directory}/ easyb /stories.html </ storyReport > </ configuration > </ plugin > </ plugins > </ build >
  17. 17. Links e Referências http://www.easyb.org/ Site oficial do framework EasyB. http://www.easyb.org/running.html#eclipse Plugin do EasyB para a IDE Eclipse. Chelimsky,David, Aslak Hellesøy, Dave Astels, Zach Dennis, Bryan Helmkamp e Dan North. The RSpec Book : Behaviour Driven Development with RSpec, Cucumber, and Friends . Edited by Jacquelyn Carter. ISBN: 978.1.93435.637-1 http://www.reginaldo.cnt.br/leitura/curiosidades/fotos-curiosas/gato_assustado.gif
  18. 18. Obrigado!

×