Sobes.tech
Junior

Fale sobre o princípio Triple A nos testes (Arrange, Act, Assert).

sobes.tech IA

Resposta da IA

O princípio Triple A (Arrange,Act,Assert) ajuda a estruturar testes unitários para melhorar a sua legibilidade e manutenção. Divide cada teste em três fases claras:

  1. Arrange (Preparar):

    • Nesta fase, o ambiente de teste é configurado, os objetos necessários são inicializados, são criados fixtures, mocks ou stubs para isolar o componente testado.
    • São definidos os dados de entrada para a função ou método testado.
  2. Act (Ação):

    • A ação principal a testar é realizada.
    • Isto pode ser uma chamada ao método testado, ou a execução de uma operação específica.
  3. Assert (Verificação):

    • O resultado da ação é verificado.
    • O resultado esperado é comparado com o real.
    • São utilizados métodos de afirmação (assertions) do framework de testes (por exemplo, JUnit, NUnit, pytest) para verificar condições.

Exemplo em Python usando pytest:

# app.py
class Calculator:
    def add(self, a, b):
        return a + b
# test_calculator.py
import pytest
from app import Calculator

def test_add_positive_numbers():
    """
    Teste da soma de dois números positivos.
    """
    # Arrange
    calculator = Calculator()
    num1 = 5
    num2 = 3
    expected_result = 8

    # Act
    actual_result = calculator.add(num1, num2)

    # Assert
    assert actual_result == expected_result, f"Expected {expected_result}, but got {actual_result}"

def test_add_negative_numbers():
    """
    Teste da soma de dois números negativos.
    """
    # Arrange
    calculator = Calculator()
    num1 = -5
    num2 = -3
    expected_result = -8

    # Act
    actual_result = calculator.add(num1, num2)

    # Assert
    assert actual_result == expected_result, f"Expected {expected_result}, but got {actual_result}"

Vantagens do uso do Triple A:

  • Legibilidade: A estrutura do teste torna-se mais compreensível, facilitando a sua leitura e compreensão.
  • Manutenção: A clara separação de fases simplifica a realização de alterações e correções de erros nos testes.
  • Foco: Cada fase concentra-se na sua tarefa específica, ajudando a escrever testes mais direcionados.
  • Padronização: A implementação do Triple A na equipa promove a uniformidade na escrita de testes.