BDD em C#: como escrever testes que o negócio entende

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

BDD em C#: quando os testes falam a linguagem do negócio

\n\n

Imagine: você é um desenvolvedor C#. Um product owner chega até você e diz: "Faça com que, após o pagamento do pedido, o usuário receba um e-mail, mas apenas se o valor for maior que 1000 reais". Você acena, vai para o código, escreve a lógica, cobre com testes unitários. Uma semana depois, você mostra o resultado. O PO olha, franze a testa e diz: "Eu quis dizer outra coisa".

\n\n

Familiar? Este é o problema clássico da lacuna entre o negócio e o desenvolvimento. E é exatamente isso que o BDD em C# resolve — Behaviour-Driven Development, ou desenvolvimento orientado a comportamento.

\n\n

Neste artigo, vamos explorar o que é BDD, como ele difere do TDD e, principalmente, como implementar BDD em um projeto C# com SpecFlow e xUnit. Você verá exemplos reais de código, aprenderá a escrever cenários em Gherkin e os transformará em testes automatizados. Vamos lá!

\n\n

O que é BDD e por que ele é necessário?

\n\n

BDD (Behaviour-Driven Development) é uma metodologia de desenvolvimento onde os requisitos do sistema são descritos através do comportamento do usuário. Em vez de especificações técnicas áridas, você escreve cenários em linguagem natural que tanto o negócio quanto o desenvolvedor entendem.

\n\n

A ideia central do BDD: "Não verifique se o código funciona. Verifique se o sistema se comporta como o negócio espera".

\n\n

Ao contrário do TDD (Test-Driven Development), onde você primeiro escreve um teste unitário e depois o código, o BDD foca em cenários de uso. Testes BDD não são uma verificação de método ou classe, mas sim a verificação de um cenário de usuário completo.

\n\n

Os três pilares do BDD

\n
    \n
  • Linguagem única — todos os participantes do projeto (PO, analista, testador, desenvolvedor) falam a mesma língua. Geralmente, é o Gherkin.
  • \n
  • Cenários — cada funcionalidade é descrita através de Given-When-Then (Dado-Quando-Então).
  • \n
  • Automação — os cenários são transformados em testes automatizados que são executados como parte do CI/CD.
  • \n
\n\n

Agora, vamos ver como isso se parece no código C#.

\n\n

Ferramentas para BDD em C#

\n\n

Para implementar BDD no ecossistema .NET, existem duas ferramentas principais:

\n\n
    \n
  • SpecFlow — o framework BDD mais popular para C#. Ele analisa cenários Gherkin e os vincula ao código.
  • \n
  • xUnit / NUnit / MSTest — executores de teste que rodam os testes BDD.
  • \n
\n\n

Usaremos SpecFlow + xUnit. A instalação é simples — via NuGet:

\n\n
dotnet add package SpecFlow\ndotnet add package SpecFlow.xUnit\ndotnet add package xunit\ndotnet add package xunit.runner.visualstudio
\n\n

Após a instalação, crie uma pasta Features no projeto — é lá que seus arquivos .feature com os cenários vão ficar.

\n\n

Escrevendo o primeiro cenário BDD em Gherkin

\n\n

Gherkin é uma linguagem de descrição de comportamento. Ela usa palavras-chave: Feature, Scenario, Given, When, Then, And, But.

\n\n

Vamos descrever um cenário simples: um usuário tenta pagar um pedido e, se o valor for maior que 1000 reais, ele recebe um e-mail.

\n\n

Crie o arquivo Payment.feature na pasta Features:

\n\n
Feature: Notificação de Pagamento\n    Como um cliente\n    Eu quero receber um e-mail após o pagamento\n    Para que eu tenha uma confirmação da minha compra\n\nScenario: Pagamento bem-sucedido acima de 1000 reais envia notificação\n    Dado um cliente com saldo de 5000 reais\n    Quando o cliente paga um pedido de 1500 reais\n    Então o cliente deve receber uma notificação por e-mail\n\nScenario: Pagamento abaixo de 1000 reais não envia notificação\n    Dado um cliente com saldo de 5000 reais\n    Quando o cliente paga um pedido de 500 reais\n    Então o cliente não deve receber nenhuma notificação por e-mail
\n\n

Observe: aqui

Blogs

Book Recommendations