DEV Community

Higor Anjos
Higor Anjos

Posted on

Padrão Give-When-Then: Organizando Testes com Clareza

O padrão Give-When-Then, também conhecido como Dado-Quando-Então, é uma abordagem comumente utilizada em testes unitários para organizar o código do teste de forma clara e concisa. Esse padrão divide o teste em três seções distintas, cada uma delas desempenhando um papel importante na estruturação e legibilidade do teste.

Give (Dado)

Na seção "Give" (Dado), preparamos o ambiente de teste e definimos o estado inicial necessário para o teste. Aqui, configuramos as condições iniciais, instanciamos objetos, fornecemos entradas e criamos qualquer outro contexto necessário para a execução do teste.

When (Quando)

Na seção "When" (Quando), executamos a ação ou o comportamento específico que está sendo testado. Essa etapa envolve a chamada de um método ou a execução de uma operação específica do sistema que desejamos testar. É importante manter essa etapa focada e direcionada ao objetivo do teste, evitando a realização de ações desnecessárias ou não relacionadas.

Then (Então)

Na seção "Then" (Então), verificamos se o resultado da ação realizada corresponde ao resultado esperado. Aqui, comparamos o valor retornado, o estado atual dos objetos ou qualquer outro aspecto relevante do sistema ou método em teste com o comportamento desejado. Essa verificação é feita utilizando asserções ou afirmações, garantindo que o teste valide corretamente o comportamento esperado.

Exemplo:

using Xunit;
using FluentAssertions;

public class CalculatorTests
{
    private Calculator calculator;

    public CalculatorTests()
    {
        calculator = new Calculator();
    }

    [Fact]
    public void GiveTwoNumbers_WhenCalled_ThenShouldReturnSumOfNumbers()
    {
        // Give
        int x = 5;
        int y = 3;

        // When
        int result = calculator.Add(x, y);

        // Then
        result.Should().Be(8);
    }
}
Enter fullscreen mode Exit fullscreen mode

No exemplo acima, estamos testando o método Add de uma calculadora. Através do uso do padrão Give-When-Then, conseguimos estruturar o teste de forma clara:

  • Na seção "Give", definimos os valores x e y como 5 e 3, respectivamente.
  • Na seção "When", chamamos o método Add da calculadora, passando os valores x e y como argumentos.
  • Na seção "Then", verificamos se o resultado retornado pelo método Add é igual a 8, utilizando a asserção result.Should().Be(8).

A utilização do padrão Give-When-Then proporciona uma estrutura clara para os testes, facilitando a leitura e entendimento das diferentes etapas envolvidas. Além disso, ajuda a manter o foco do teste em cada ação específica, tornando-o mais legível e fácil de dar manutenção. Ao aplicar esse padrão, é possível obter testes mais claros, confiáveis e de fácil compreensão para toda a equipe de desenvolvimento.

Top comments (0)