Sobes.tech
Junior

Разкажете ни за принципа Triple A в тестването (Arrange, Act, Assert).

sobes.tech AI

Отговор от AI

Принципът Triple A (Arrange,Act,Assert) помага да се структурира юнит тестове за подобряване на тяхната четливост и поддържане. Той разделя всеки тест на три ясни фази:

  1. Arrange (Подготовка):

    • Настройва тестовата среда, инициализира необходимите обекти, създава фикстури, моки или стаби за изолиране на тестирания компонент.
    • Определя входните данни за тестируемата функция или метод.
  2. Act (Действие):

    • Извършва основното действие, което трябва да бъде тествано.
    • Това може да бъде извикване на тестирания метод или изпълнение на определена операция.
  3. Assert (Проверка):

    • Проверява резултата от действието.
    • Сравнява очаквания резултат с фактическия.
    • Използват се методи за твърдения (assertions) от тестовия фреймуърк (например JUnit, NUnit, pytest).

Пример на Python с използване на 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():
    """
    Тест за събиране на две положителни числа.
    """
    # 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():
    """
    Тест за събиране на две отрицателни числа.
    """
    # 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}"

Предимства на използването на Triple A:

  • Четливост: Структурата на теста става по-разбираема, което улеснява четенето и разбирането му.
  • Поддържане: Ясното разделяне на фазите улеснява правенето на промени и корекции в тестовете.
  • Фокус: Всяка фаза се концентрира върху своята конкретна задача, което помага за писане на по-целенасочени тестове.
  • Стандартизация: Внедряването на Triple A в екипа допринася за единство при писане на тестове.