Press enter to see results or esc to cancel.

Drops de testes – Você conhece o conceito A A A?

Olá!

Estou iniciando com este post uma série de posts sobre testes automatizados, e a ideia é que em cada um deles, a gente passe por alguns conceitos e ferramentas sobre testes de unidade que são uteis e que usamos no dia a dia.

As ferramentas que vou utilizar ao longo do post serão voltadas para o ecossistema .NET mas os conceitos se aplicam a qualquer linguagem.

 

AAA, o que é isto?

Nós sempre utilizamos estes 3 passos quando escrevemos testes automatizado, mesmos que inconscientemente. Eles são o Arrange, Act e Assert (ou Arranjo, Ação e Asserção). Normalmente são chamados de AAA.

Isto na verdade é uma separação lógica do código. Há quem use comentários para separar cada estágio, o que pode ser útil quando você está começando a escrever testes, mas não tão popular quando você está trabalhando em um projeto com mais pessoas.

Arrange

No Arrange é onde nós definimos tudo o que o teste precisa para ser executado. Aqui preparamos o que o teste usará, e de forma independente, para que o teste seja capaz de ser executado sem dependências externas. Isto é importante para que seu teste seja um teste forte e não dependa de outros cenários para que seja executado com sucesso.

É aqui, por exemplo, onde criamos a classe que vai ser testada, simulamos algum comportamento caso necessário (chamamos isto de mock/setup e será abordado futuramente) ou ainda “limpamos” o ambiente de execução para o teste. Podemos dizer que é aqui onde “preparamos a casa” para a execução do teste.

Act

Nesta etapa é onde executamos aquilo que de fato queremos testar. É aqui que iremos realizar a chamada do método que vamos verificar o resultado, a quantidade de chamadas ou ainda os parâmetros que foram recebidos.

Assert

Esta é a última etapa do teste e é onde vamos checar o resultado da execução. É aqui que checamos se o resultado do método que chamamos no Act foi o esperado, se o método foi chamado a quantidade de vezes esperada ou se forma enviados os parâmetros corretamente.

É importante que, de forma geral, seu método tenha apenas um Assert. Mantendo seu método com um Assert, ele ficará mais claro, você terá uma maior precisão do que está testando e quando seu teste falhar, ele irá falhar por um motivo único e específico.

 

Tranquilo né!?

Se você já escreve teste é possível que você já faça isso inconscientemente. Se você não escreve testes ainda ou está começando, fazer essa separação lógica irá te ajudar a atingir seus objetivos.

Vamos ver um exemplo abaixo:

[Test]
public void DeveRetornarOModeloDoCarroEsperado()
{
    //Arrange
    var minhaClasse = new MinhaClasse();

    //Act
    var resultado = minhaClasse.ObterCarro();

    //Assert
    Assert.AreEqual("Corsa", resultado);
}

Tweet about this on TwitterShare on FacebookShare on LinkedInEmail this to someone
Comments

Leave a Comment