Sobes.tech
Junior

Povězte nám o principu Triple A v testování (Arrange, Act, Assert).

sobes.tech AI

Odpověď od AI

Princip Triple A (Arrange,Act,Assert) pomáhá strukturovat jednotkové testy ke zvýšení jejich čitelnosti a udržovatelnosti. Dělí každý test na tři jasné fáze:

  1. Arrange (Příprava):

    • Nastaví testovací prostředí, inicializuje potřebné objekty, vytváří fiksury, mocks nebo stubs pro izolaci testovaného komponentu.
    • Určí vstupní data pro testovanou funkci nebo metodu.
  2. Act (Akce):

    • Provádí hlavní akci, kterou je třeba otestovat.
    • To může být volání testované metody nebo provedení určité operace.
  3. Assert (Ověření):

    • Kontroluje výsledek provedené akce.
    • Porovnává očekávaný výsledek s aktuálním.
    • Používají se metody tvrzení (assertions) z testovacího rámce (například JUnit, NUnit, pytest).

Příklad v Pythonu s použitím 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 sčítání dvou kladných čísel.
    """
    # 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 sčítání dvou záporných čísel.
    """
    # 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}"

Výhody použití Triple A:

  • Čitelnost: Struktura testu je srozumitelnější, což usnadňuje jeho čtení a pochopení.
  • Udržovatelnost: Jasné rozdělení fází usnadňuje provádění změn a oprav chyb v testech.
  • Zaměření: Každá fáze se soustředí na svůj konkrétní úkol, což pomáhá psát cílenější testy.
  • Standardizace: Zavedení Triple A v týmu přispívá k jednotnosti při psaní testů.