Quais são os prós e os contras de cada estrutura de BDD ( Behavior Driven Development ) para Java?
Eu encontrei alguns deles aqui , por exemplo.
Faz sentido usar uma estrutura BDD se eu já usar uma biblioteca de simulação (por exemplo, Mockito )?
Quais são os prós e os contras de cada estrutura de BDD ( Behavior Driven Development ) para Java?
Eu encontrei alguns deles aqui , por exemplo.
Faz sentido usar uma estrutura BDD se eu já usar uma biblioteca de simulação (por exemplo, Mockito )?
Respostas:
Acabei de comparar três estruturas de BDD para Java. Obviamente, minhas descobertas têm uma data de validade bastante curta.
Não tive a chance de experimentar o Cuke4Duke do JDave como gostaria, mas provavelmente vou pressionar o JBehave no momento.
"prós e contras" podem ser coisas diferentes para pessoas diferentes. Eu geralmente dou uma olhada
E de alguns frameworks eu dei uma olhada
Em relação às zombarias: Você definitivamente precisa de uma estrutura de zombaria também. As estruturas do BDD apenas ajudam você a escrever as especificações, mas alguns testes precisarão de zombarias ou stubs, esp. quando você projeta de cima para baixo (da visão geral aos detalhes).
Qual é a melhor estrutura de BDD para usar com Java? Por quê? Quais são os prós e os contras de cada estrutura?
Aqui está um link interessante sobre Concordion vs. Pepino e Java baseado em testes de aceitação
Eu encontrei alguns deles aqui, mas não tenho certeza de qual escolher.
Realmente, olhe para o mencionado acima.
Faz sentido usar uma estrutura de BDD se eu já uso uma biblioteca de simulação (por exemplo, Mockito)?
Resposta curta: sim, definitivamente. Na verdade, o teste de aceitação usando uma estrutura BDD e o teste de unidade isoladamente usando objetos simulados são tão diferentes que eu realmente não entendi a pergunta. O teste de aceitação é um teste de caixa preta, testes são usados para verificar se um recurso de negócios está funcionando e são idealmente escritos pelo analista de negócios. Testes de unidade isolados usando zombarias são testes de caixa branca, testes são usados para verificar se uma unidade está funcionando e são gravados pelos desenvolvedores. Ambos são úteis, mas têm propósitos totalmente diferentes. Em outras palavras, o uso do Mockito não substitui a estrutura do BDD e o inverso também é verdadeiro.
Originalmente, eu fiz meu BDD com jUnit simples, mas tenho observado o JDave recentemente porque é quase 1: 1 para o que eu estava fazendo com o jUnit. Ele também roda sobre o jUnit, portanto, ele já funciona no Eclipse e também é fácil de configurar para funcionar em sistemas de integração contínua, como o Hudson. Não posso compará-lo com outros, mas minhas experiências com o JDave foram boas até agora.
Ah, e nunca é uma idéia estúpida usar zombarias! Eles não estão ligados especificamente ao TDD / BDD, seu objetivo é aliviar o fardo dos testes em geral.
Uau, vejo que o assunto é quente, muitas boas respostas ...
Ironia à parte, descobri recentemente o BDD e achei o conceito interessante. Ei, obriga a escrever ambos os testes ... e especificações! Por mais surpreendente que possa parecer, o último também pode estar ausente em alguns projetos ... Ou apenas na falta da precisão que o BDD força a introduzir.
O artigo Behavior Driven Development resume o conceito e os links para alguns bons artigos (como o de Andrew Glover). Além disso, para o tópico deste encadeamento, ele fornece uma lista bastante abrangente (suponho) das estruturas BDD, um bom número delas para Java.
Não resolve o problema de escolher a estrutura, mas pelo menos facilitará a pesquisa ...
Como o BDD depende muito da legibilidade do código de teste, suponho que um bom critério de escolha seja examinar os tours / tutoriais rápidos e ver qual deles parece mais adequado ao seu estilo. Outros critérios podem ser o fato de uma estrutura alavancar ferramentas com as quais você está familiarizado (teste de unidade, zombaria), uso com o IDE e assim por diante.
Eu tentei o Cucumber-JVM (anteriormente desenvolvido como Cuke4Duke). Ele usa o Gherkin DSL para especificação, armazenado como texto sem formatação.
Pode ser executado como um teste JUnit. Portanto, o único problema para começar a usá-lo é fazer com que pessoas de negócios ou gerente de produto leiam / gravem .features em Fontes.
Resultados
Minha equipe usa o JBehave há algum tempo. Ele usa arquivos de texto sem formatação para armazenar especificações. Cada etapa (Dado, Quando, Então) é então executada por um determinado método que pode extrair parâmetros da etapa. Os cenários podem ser recuados e bem formatados, o que ajuda muito se os clientes quiserem verificá-los.
Existem alguns problemas também. Mudamos para o Java 6. Às vezes, algumas etapas do cenário são ignoradas durante a execução. Pode causar muitos problemas para descobrir onde está o erro.
Minha equipe usou o JBehave com êxito - passamos a ele depois de usar o EasyB e achamos os arquivos de cenário de texto sem formatação mais fáceis de lidar.