Git Product home page Git Product logo

bdd-java-cucumber-selenium's Introduction

BDD

O que é BDD (o Behaviour Driven Development)

  • BDD tenta melhorar a comunicação e colaboração.

  • BDD tenta aproximar o negócio e criar um entendimento melhor como a aplicação deveria funcionar. Existem vários tipos e níveis de testes, como por exemplo:

     - testes de unidade
     - testes de integração
     - testes ponta a ponta (end-to-end)
    

Cucumber

não fornece nenhuma ferramenta para efetivamente verificar condições.

Para isso devemos utilizar o Junit que traz inúmeros métodos interessantes de verificação, a partir da classe org.junit.Assert

Essa classe fornece métodos estáticos muito simples que verificam se o parâmetro é verdadeiro, se há igualdade etc, como por exemplo:

Assert.assertEquals(Object expected, Object actual);

Para saber mais sobre essa função você pode conferir a documentação oficial:

https://junit.org/junit4/javadoc/4.8/org/junit/Assert.html

e a documentação do Cucumber:

https://cucumber.io/docs/cucumber/checking-assertions/

Como integrar a biblioteca Cucumber na aplicação

Cucumber pode ser inicializado a partir do junit4 (@RunWith)
os arquivos .feature são analisados pelo Gherkin e Cucumber
    - Gerkin é uma linguagem para definir os .feature
    - Cucumber gera e roda os passos (steps) associados ao .feature
dentro do .feature escrevemos a funcionalidade e os critérios de aceitação
um critério de aceitação segue a estrutura de um teste (passos ou steps)
    os passos são Given-When-Then ou Dado-Quando-Entao
cada passo será implementado por um método anotado (step).


    um arquivo .feature pode ter vários cenários e passos (steps)
os métodos associado aos passos são reaproveitados entre cenários
    podemos passar parâmetros do cenário ao método
Cucumber possui anotações para inicializar (@Before) e finalizar (@After) o cenários
    - os métodos anotados com @Before e @After são chamados de Hooks
    cuidado, pois os Hooks não são visíveis no arquivo .feature
    
    Usados Exemplos para alimentar o mesmo teste com dados diferentes
Usado DataTables para passar vários dados ao teste de uma vez só

O PageObject é um padrão de projeto para encapsular o acesso a uma pagina da aplicação
    - todo o código especifico da interface com Selenium fica dentro do PageObject
não devemos usar Selenium diretamente nas classe de "steps" do Cucumber
	- O teste, mesmo com Selenium, deve sempre começar a partir de estado "limpo"
a melhor estrategia de buscar um elemento na interface é usar a ID 

bdd-java-cucumber-selenium's People

Contributors

fariawillyan avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.