O Padrão Triple A (Arrange, Act, Assert)

Pablo Rodrigo Darde
2 min readFeb 28, 2020

--

Este é a parte 2 de um série de 3 partes sobre Melhores Práticas em Testes de Unidade.

Você pode conferir as outras partes aqui:

Testes de unidade bem escritos trazem qualidade ao nosso trabalho. Mas como saber se estamos escrevendo testes da forma correta? Qual o mínimo necessário para garantir que um trecho de código seja considerado um teste de unidade completo?

O modelo Triple A é um padrão que diz que todo o teste de unidade deve possuir três etapas: Arrange (Preparar o teste), Act (Rodar o teste) e Assert (Verificar as asserções).

1ª Arrange

Nesta etapa nós configuramos tudo o que é necessário para que o nosso teste possa rodar, inicializamos variáveis, criamos alguns test doubles como Mocks ou Spies dentre outras coisas.

2ª Act

Esta etapa é onde rodamos de fato o nosso teste. Chamamos alguma função ou método que queremos por a prova.

3ª Assert

Esta etapa é onde faremos nosso assert. É onde verificamos se a operação realizada na etapa anterior (Act) surtiu o resultado esperado. Assim sabemos se o teste passa ou falha.

Exemplo:

Vamos construir uma função Sum que soma dois valores e analisar cada etapa do seu teste. Seguindo o processo TDD começamos pelo teste:

calculator_test.go

Fica claro neste exemplo que cada teste de unidade obrigatoriamente deve conter estas 3 etapas para ser um teste válido. Na etapa Arrange nós inicializamos três variáveis (value1, value2 e expected). Na etapa Act nós inicializamos uma variável para armazenar o resultado na nossa ação, que é executar a função Sum. Na terceira etapa (Assert), fazemos uma verificação para ver se o teste passa ou falha.

Pode acontecer de nós compartilharmos alguma etapa com outros testes como veremos abaixo:

calculator_test.go

Podemos ver no código acima que criamos um helper (t.Helper()) para compartilhar a etapa de Assert entre os testes. Os dois testes ainda continuam tendo as 3 etapas de forma independente. Da mesma maneira podemos compartilhar as etapas de Arrange e Act.

Nada de complicado no modelo Triple A. Simplesmente devemos ter em mente que todo teste de unidade deve passar por essas três etapas.

--

--

Pablo Rodrigo Darde

Software Engineer — bachelor’s degree in Software Engineering.