Embora eu não tenha participado de um projeto de TDD ou BDD, ou de alguns que dizem que estão fazendo TDD, mas estão muito longe disso, essas são coisas em que penso e realmente tento ler o máximo que posso sobre.
De volta à pergunta. Ao fazer o BDD, você deve escrever seu "teste" primeiro e fazê-lo falhar, certo? E então implemente esse recurso ou como você o chama. Mas se você levar isso ao extremo, isso não poderia ser algum tipo de desenvolvimento de cima para baixo? Você está olhando sua interface do usuário e diz: "Gostaria de ter esse recurso / comportamento aqui". Em seguida, você corrige sua interface do usuário para implementar esse recurso e o código que suporta a interface do usuário. Neste ponto, você não implementou nenhuma lógica comercial ou lógica de acesso a dados, apenas implementou seu comportamento. O que eu pretendo, em vez de escrever o teste, primeiro você escreve seu código de interface do usuário. Em alguns casos, deve resultar no mesmo código para a camada de negócios e acesso a dados, pois você usa o código da interface do usuário para definir o que sua empresa precisa oferecer suporte.
É claro que você deve complementar isso com testes que são usados para garantir que o recurso esteja funcionando como deveria.
Alguma ideia?
main
. No seu comentário de cima para baixo, você está falando sobre testes funcionais, que executam todo o programa em um únicomain
.