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);
}
}
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
ey
como 5 e 3, respectivamente. - Na seção "When", chamamos o método
Add
da calculadora, passando os valoresx
ey
como argumentos. - Na seção "Then", verificamos se o resultado retornado pelo método
Add
é igual a 8, utilizando a asserçãoresult.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)