18
BDD com EasyB Por Ismael Soares

BDD com Easyb

  • Upload
    ismael

  • View
    2.211

  • Download
    2

Embed Size (px)

DESCRIPTION

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.

Citation preview

Page 1: BDD com Easyb

BDD com EasyBPor Ismael Soares

Page 2: BDD com Easyb

http://www.easyb.org/http://www.easyb.org/

Page 3: BDD com Easyb

Simplesmente descomplicadoSimplesmente descomplicado

Page 4: BDD com Easyb

Fácil de aprenderFácil de aprender

Características

Utiliza linguaguem dinâmica (Groovy)Utiliza linguaguem dinâmica (Groovy)

Possui dois formatos para escrita de código (Stories e Possui dois formatos para escrita de código (Stories e

Specifications)Specifications)

Relatórios HTML usando MavenRelatórios HTML usando Maven

Plugin para o EclipsePlugin para o Eclipse

Page 5: BDD com Easyb

MavenMaven

<dependency> <groupId>org.easyb</groupId> <artifactId>easyb-maven-plugin</artifactId> <version>0.9.7-1</version></dependency>

Page 6: BDD com Easyb

Triste notícia….Triste notícia….

Page 7: BDD com Easyb

Mas nem tudo está perdido….Mas nem tudo está perdido….

Page 8: BDD com Easyb

Plugin para EclipsePlugin para Eclipse

Page 9: BDD com Easyb

Exemplo com Estória do UsuárioExemplo com Estória do Usuário

Page 10: BDD com Easyb

Definição do formatoDefinição do formato

Page 11: BDD com Easyb

//Descrição do teste (opcional) description "Cliente faz saque "

//Narrativa da estória (opcional)2. narrative 'Saque de Cliente', {3. as_a 'cliente'4. i_want 'de sacar dinheiro em caixa eletrônico'5. so_that 'eu não tenha que esperar numa fila de banco'6. }

//Método que será executado antes de cada cenário //Instancia o cliente e cria a variável que irá armazenar o retorno do saque7. before_each "",{8. given "um cliente",{9. cliente = new Cliente()10. saqueEfetuado = false11. }12.}

//Primeiro Cenário13. scenario "cliente especial com saldo negativo",{

14. given "um cliente especial com saldo atual de -200 reais",{15. cliente.saldoAtual = -200;16. cliente.clienteEspecial();17. }

18. when "for solicitado um saque no valor de 100 reais", {19. saqueEfetuado = cliente.sacar(100);20. }

21. then "deve efetuar o saque e atualizar o saldo da conta para -300 reais", {22. saqueEfetuado.shouldBe true23. (cliente.saldoAtual == -300).shouldBe true24. }

25. }

CaixaEletronicoTest.storyCaixaEletronicoTest.story

Page 12: BDD com Easyb

//Segundo Cenário26. scenario "cliente comum com saldo negativo",{27. given "um cliente comum com saldo atual de -300 reais",{28. cliente.saldoAtual = -300;29. cliente.clienteComum();30. }

31. when "for solicitado um saque no valor de 200 reais", {32. try{33. cliente.sacar(200)34. }catch (Exception e) {35. msg = e.message36. }37. }

38. then "não deve efetuar o saque", {39. saqueEfetuado.shouldBe false

}

41. and "deve retornar a mensagem Saldo Insuficiente",{42. msg.shouldBe 'Saldo Insuficiente'43. }43. }

CaixaEletronicoTest.storyCaixaEletronicoTest.story

Page 13: BDD com Easyb

1. description "Testando uma pilha"2.

before "inicializa a fila para cada especificação", {3. pilha = new Stack<Integer>()4. }

5. it "deve possuir apenas 1 elemento", {6. pilha.push(2)7. pilha.size().shouldBe(1)8. }

9. it "deve retornar uma exception quando for retirado um elemento da pilha vazia", {10. ensureThrows(Exception.class) {11. pilha.pop()

}

13.}

14.it "deve empilhar e desempilhar os elementos na mesma ordem", {15. [1..5].each {val ->16. pilha.push(val)17. }

18. [1..5].each {val ->19. pilha.pop().shouldBe(val)20. }21 }

CaixaEletronicoTest.specificationCaixaEletronicoTest.specification

Page 14: BDD com Easyb

Executando com MavenExecutando com Maven

Page 15: BDD com Easyb

Relatório HTMLRelatório HTML

Page 16: BDD com Easyb

Plugin do Maven para gerar relatóriosPlugin 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>

Page 17: BDD com Easyb

Links e Referências

http://www.easyb.org/Site oficial do framework EasyB.

http://www.easyb.org/running.html#eclipsePlugin 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

Page 18: BDD com Easyb

Obrigado!Obrigado!