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); }
Comments
Leave a Comment