Sobes.tech
Junior

Opowiedz o zasadzie Triple A w testowaniu (Arrange, Act, Assert).

sobes.tech AI

Odpowiedź od AI

Zasada Triple A (Arrange,Act,Assert) pomaga w strukturyzacji testów jednostkowych w celu poprawy ich czytelności i utrzymania. Dzieli każdy test na trzy wyraźne fazy:

  1. Arrange (Przygotowanie):

    • W tej fazie konfiguruje się środowisko testowe, inicjuje potrzebne obiekty, tworzy fikstury, moki lub stuby do izolacji testowanego komponentu.
    • Określa się dane wejściowe dla testowanej funkcji lub metody.
  2. Act (Działanie):

    • Wykonuje się główne działanie, które ma zostać przetestowane.
    • Może to być wywołanie testowanej metody lub wykonanie określonej operacji.
  3. Assert (Asercja):

    • Sprawdza się wynik działania.
    • Porównuje się oczekiwany wynik z faktycznym.
    • Używa się metod asercji z frameworka testowego (np. JUnit, NUnit, pytest) do sprawdzania warunków.

Przykład w Pythonie z użyciem 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():
    """
    Test dodawania dwóch liczb dodatnich.
    """
    # 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():
    """
    Test dodawania dwóch liczb ujemnych.
    """
    # 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}"

Zalety stosowania Triple A:

  • Czytelność: Struktura testu staje się bardziej zrozumiała, co ułatwia jego czytanie i rozumienie.
  • Utrzymanie: Jasne rozdzielenie faz upraszcza wprowadzanie zmian i naprawę błędów w testach.
  • Skupienie: Każda faza koncentruje się na swoim konkretnym zadaniu, co pomaga pisać bardziej ukierunkowane testy.
  • Standaryzacja: Wprowadzenie Triple A w zespole sprzyja jednolitości w pisaniu testów.