Teste unitário e o padrão AAA(Arrange, Act, Assert)
- #Testes unitários
- #Java
Teste unitário é um tipo de teste de software onde uma pequena parte da aplicação, chamada de unidade, podendo ser uma função, classe ou método, é testada individualmente. Esse teste é realizado durante o processo de desenvolvimento de um software com o objetivo de verificar se cada unidade está funcionando como esperado.
Benefícios dos testes unitários
Apesar de serem odiados, esses testes ajudam, e muito, os desenvolvedores a realizar mudanças no código devido à pouca dependência da unidade testada, além de contribuir com a melhora da qualidade do código escrito.
Outra das vantagens do teste unitário é a descoberta de erros/falhas ainda na fase inicial do desenvolvimento da aplicação. O custo (esforço, tempo…) para detectar e corrigir os erros encontrados nessa fase é muito menor comparado à fases posteriores. Bem como a reutilização do código, já que ele deve ser escrito em módulos para poder ser testado.
O padrão AAA (Arrange, Act, Assert)
O padrão AAA é uma maneira comum de escrever testes de unidade para um método em teste. Sua estrutura de desenvolver um teste seguindo 3 passos facilita a leitura e compreensão do código.
O primeiro passo (Arrange) é realizar a preparação do teste, pode ser inicializando objetos, declarando variáreis que serão passadas como parâmetros para o método ou função testada, etc.
O segundo passo(Act) é quando o método/função testada é chamada e executada com os objetos ou parâmetros do passo anterior.
No último passo(Assert), é verificado se os resultados obtidos batem com os resultados esperado.
Para o exemplo, iremos utilizar a linguagem Java com a ferramenta de teste JUnit.
public class Calculo{
public int sum(int a, int b) {
return a + b;
}
}
No código acima foi criada uma classe com o nome Calculo contendo apenas um método chamado sum, que recebe dois inteiros como parâmetro e retorna um inteiro com a soma dos dois valores.
import static org.junit.Assert.*;
import org.junit.Test;
public class sumTeste {
@Test
public void sumtest() {
//Arrange
Calculo c = new Calculo();
int v1 = 10;
int v2 = 10;
int result;
//Act
result = c.sum(v1, v2);
//Assert
assertEquals(20, result);
}
}
Já no código acima foi criada uma classe de teste chamada sumtest onde será executado nosso teste unitário. Podemos ver os 3 passos do padrão AAA, sendo primeiro criado um objeto e algumas variáveis que serão passadas como parâmetro, além de uma variável que receberá o resultado do método testado (Arrange). Em seguida (Act), é chamado o método sum do objeto criado no passo anterior e o resultado é atributo na variável result. Por fim, no passo Assert, o resultado é comparado com o valor esperado.
Fonte: Medium