Sobes.tech
Junior

Povestiți-ne despre principiul Triple A în testare (Arrange, Act, Assert).

sobes.tech AI

Răspuns de la AI

Principiul Triple A (Arrange,Act,Assert) ajută la structurarea testelor unitare pentru a le crește lizibilitatea și întreținerea. Împarte fiecare test în trei faze clare:

  1. Arrange (Pregătire):

    • În această fază se configurează mediul de testare, se inițializează obiectele necesare, se creează fixtures, mocks sau stubs pentru a izola componenta testată.
    • Se definesc datele de intrare pentru funcția sau metoda testată.
  2. Act (Acțiune):

    • Se execută acțiunea principală care trebuie testată.
    • Poate fi o apelare a metodei testate sau executarea unei operații specifice.
  3. Assert (Verificare):

    • Se verifică rezultatul acțiunii.
    • Se compară rezultatul așteptat cu cel real.
    • Se utilizează metode de afirmație (assertions) din framework-ul de testare (de exemplu, JUnit, NUnit, pytest) pentru verificarea condițiilor.

Exemplu în Python cu 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():
    """
    Testarea adunării a două numere pozitive.
    """
    # 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():
    """
    Testarea adunării a două numere negative.
    """
    # 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}"

Avantajele utilizării principiului Triple A:

  • Claritate: Structura testului devine mai ușor de înțeles, facilitând citirea și înțelegerea sa.
  • Întreținere: Separarea clară a fazelor simplifică efectuarea modificărilor și corectarea erorilor în teste.
  • Focalizare: Fiecare fază se concentrează pe sarcina sa specifică, ajutând la scrierea unor teste mai direcționate.
  • Standardizare: Implementarea Triple A în echipă promovează uniformitatea în scrierea testelor.