O que é BDD e por que isso salvará seu projeto?
\n\nVocê já esteve em uma situação onde os desenvolvedores dizem: "A lógica funciona perfeitamente", e o cliente responde: "Mas isso não é nada do que eu pedi!"? Familiar? É aí que entra o BDD (Behaviour-Driven Development) — desenvolvimento orientado a comportamento.
\n\nBDD em Java não é apenas um termo da moda. É uma metodologia que elimina a fronteira entre requisitos de negócio e código. Em vez de escrever testes técnicos áridos (como em TDD), você escreve cenários em linguagem humana compreensível. E sim, até seu gerente, que acha que "Java é uma ilha", conseguirá lê-los.
\n\nComo o BDD difere do TDD? (Spoiler: não são a mesma coisa)
\n\nMuitos confundem TDD (Test-Driven Development) e BDD. Vamos esclarecer:
\n\n- \n
- TDD: Você escreve um teste que falha, depois escreve o código para o teste passar. O foco está na implementação técnica. \n
- BDD: Você primeiro descreve o comportamento do sistema em termos do usuário. "Quando o usuário clica no botão, o sistema faz tal coisa". O foco está no valor de negócio. \n
BDD usa Gherkin — uma linguagem de cenários com palavras-chave Given, When, Then. Parece mais ou menos assim:
Funcionalidade: Login no sistema\n Cenário: Login bem-sucedido com dados corretos\n Dado que o usuário está na página de login\n Quando o usuário insere o login "admin" e a senha "12345"\n Então o usuário vê a mensagem "Bem-vindo!"\n\n\nConcorda que isso se lê como uma instrução, e não como documentação técnica? É aí que reside a força do desenvolvimento orientado a comportamento em Java.
\n\nFerramentas para BDD em Java: escolhendo o framework
\n\nNo mundo Java, existem dois principais players para BDD: Cucumber e JBehave. Vamos compará-los.
\n\nCucumber para Java: o rei do BDD
\n\nCucumber é o framework mais popular. Ele suporta Gherkin nativamente, integra-se com JUnit e TestNG, e tem uma enorme comunidade. Se você é iniciante em BDD Java, comece com Cucumber.
\n\nJBehave: antigo, mas confiável
\n\nJBehave é o "avô" do BDD. É menos popular, mas ainda usado em projetos legados. Sua principal diferença: os cenários são escritos em arquivos de texto, e as etapas são vinculadas através de anotações @Given, @When, @Then.
Pessoalmente, recomendo Cucumber — tem melhor documentação e mais exemplos. Mas se você trabalha com um projeto antigo, JBehave também serve.
\n\nEscrevendo seu primeiro teste BDD em Java: guia passo a passo
\n\nVamos passar da teoria à prática. Criaremos um projeto simples com Maven e Cucumber. Sua tarefa é entender a estrutura, não apenas copiar o código.
\n\nPasso 1: Adicionar dependências
\n\nAdicione as seguintes dependências ao pom.xml:
<dependency>\n <groupId>io.cucumber</groupId>\n <artifactId>cucumber-java</artifactId>\n <version>7.18.0</version>\n <scope>test</scope>\n</dependency>\n<dependency>\n <groupId>io.cucumber</groupId>\n <artifactId>cucumber-junit-platform-engine</artifactId>\n <version>7.18.0</version>\n <scope>test</scope>\n</dependency>\n\n\nPasso 2: Criar o arquivo feature
\n\nNa pasta src/test/resources, crie o arquivo login.feature:
Funcionalidade: Autenticação do usuário\n Como um usuário registrado\n Eu quero fazer login no sistema\n Para acessar minha conta pessoal\n\n Cenário: Autenticação bem-sucedida\n Dado que o usuário abriu a página de login\n Quando o usuário insere o login "te