Utilizando BDD com .Net

O que é BDD?
Behaviour Driven Development é uma técnica de desenvolvimento Ágil que visa a colaboração entre desenvolvedores, QAs e analistas, onde o foco está na documentação do comportamento do software. Além disso, melhora a comunicação de toda a equipe.
Por que utilizar BDD?
BDD seria uma evolução do TDD, pois com ele você escreve os cenários de teste antes de desenvolver algum código. Sendo assim, serve para criar testes e integrar regras de negócios com a linguagem de programação. Seu foco é a linguagem e as interações utilizadas no processo de desenvolvimento de software. Permite que analistas e QAs escrevam testes e regras sem saber programar, contribuindo para os desenvolvedores, onde eles focam em como criar um código para atender ao cenário.
Objetivo
Criar uma documentação utilizando os princípios do BDD e integrá-lo a um projeto feito em .Net.
Criação do projeto
Para iniciar, abre-se o Visual Studio (de preferência o 2017) e vá em ‘Arquivo’, ‘Novo’ e ‘Projeto’. Seleciona-se uma Solution em branco:

Com a Solution criada, adiciona-se dois projetos, um Console Application e outro Unit Test.



Desenvolvimento do código
O intuito do projeto é calcular o quanto de horas extras uma pessoa ganhará. No projeto Console Application, cria-se uma classe chamada ‘CalculoHora’, nela ficará todas as regras de negócio do sistema.
Após criação da classe, utiliza-se a mesma na classe principal do projeto, que é ‘Program.cs’:
Implantação dos testes
Para realizar os testes com base no BDD, utiliza-se um framework chamado SpecFlow. Sendo assim, instala-se uma extensão do mesmo no Visual Studio (como o exemplo foi realizado no 2017, utiliza-se o pacote referente). Para isso, vá em ‘Ferramentas’ e ‘Extensões e Atualizações’, selecione a opção ‘Online’ e digite na barra de pesquisa ‘SpecFlow’:

Para instalar completamente, deve-se fechar o Visual Studio (após aparecer uma tarja amarela no canto inferior).
Após isso, necessita-se instalar o pacote SpecFlow no projeto de testes:

Após a instalação do pacote, necessita-se configurar o tipo de projeto de testes no arquivo App.config

Agora, inicia-se a escrita das funcionalidades a serem testadas. Para isso, adiciona-se um novo arquivo .feature:


No arquivo criado, escreve-se o seguinte:
Observação: Ao informar a linguagem do arquivo na primeira linha ‘pt-br’ o mesmo consegue ativar Intelisense e syntax highlighting para a linguagem referente e apresenta as opções existentes.
Terminado de escrever, executa-se o teste: ‘Teste’, ‘Executar’ e ‘Todos os Testes’
Após a execução, será gerado um arquivo .cs e apresentará um erro, e o próprio SpecFlow irá exibir o código que o mesmo espera executar:

Com isso, basta copiar o código e criar um novo item do tipo Steps:

O projeto pode ser encontrado no repositório do GitHub: https://github.com/alex250195/modelo.bdd.
Conclusão
Nota-se que, com pouco conteúdo, gera-se uma documentação útil para o QA, Analistas e, inclusive, para o desenvolvedor, não necessitando, em momento algum, o entendimento de alguma linguagem de programação, o que infere na escrita pura do BDD. Além disso, elimina a utilização de demais arquivos como word e pdf, mantendo tudo dentro de um projeto e, garantindo estar, sempre atualizado.