DEV Community

Higor Anjos
Higor Anjos

Posted on

3

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.

AWS GenAI LIVE image

Real challenges. Real solutions. Real talk.

From technical discussions to philosophical debates, AWS and AWS Partners examine the impact and evolution of gen AI.

Learn more

Top comments (0)

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay