← Назад ко всем вопросам

Что такое Arrange-Act-Assert (Given-When-Then)?

1️⃣ Как кратко ответить

Arrange-Act-Assert (AAA) и Given-When-Then (GWT) — это шаблоны для организации тестов, которые помогают структурировать тестовые сценарии. AAA используется в юнит-тестировании и состоит из трех этапов: подготовка данных (Arrange), выполнение действия (Act) и проверка результата (Assert). GWT — это аналогичный подход, часто используемый в BDD (Behavior-Driven Development), где Given описывает начальные условия, When — действие, а Then — ожидаемый результат.

2️⃣ Подробное объяснение темы

Arrange-Act-Assert (AAA) и Given-When-Then (GWT) — это два популярных шаблона, которые помогают структурировать тесты, делая их более понятными и поддерживаемыми.

Arrange-Act-Assert (AAA)

Этот шаблон широко используется в юнит-тестировании. Он делит тест на три четких этапа:

  1. Arrange (Подготовка): На этом этапе происходит настройка всех необходимых данных и объектов. Это может включать создание экземпляров классов, настройку начальных значений переменных и подготовку окружения для теста.

  2. Act (Действие): Здесь выполняется действие, которое вы хотите протестировать. Это может быть вызов метода или выполнение какой-либо операции, результат которой вы хотите проверить.

  3. Assert (Проверка): На этом этапе вы проверяете, что результат действия соответствует ожидаемому. Это может включать сравнение значений, проверку состояния объектов или вызовов методов.

Пример кода на Java:

@Test
public void testAddition() {
    // Arrange
    Calculator calculator = new Calculator();
    int a = 5;
    int b = 10;
​
    // Act
    int result = calculator.add(a, b);
​
    // Assert
    assertEquals(15, result);
}
  • Arrange: Создаем объект Calculator и задаем значения a и b.
  • Act: Вызываем метод add и сохраняем результат.
  • Assert: Проверяем, что результат равен ожидаемому значению 15.

Given-When-Then (GWT)

Этот шаблон часто используется в BDD (Behavior-Driven Development) и помогает описывать тесты с точки зрения поведения системы. Он также делится на три этапа:

  1. Given (Дано): Описывает начальные условия или состояние системы перед выполнением теста.

  2. When (Когда): Описывает действие или событие, которое происходит в тесте.

  3. Then (Тогда): Описывает ожидаемый результат или состояние системы после выполнения действия.

Пример на языке Gherkin, который часто используется в инструментах BDD, таких как Cucumber:

Scenario: Addition of two numbers
  Given a calculator
  And the numbers 5 and 10
  When I add the numbers
  Then the result should be 15
  • Given: У нас есть калькулятор и числа 5 и 10.
  • When: Мы складываем эти числа.
  • Then: Ожидаем, что результат будет равен 15.

Оба подхода помогают сделать тесты более читаемыми и понятными, что облегчает их поддержку и развитие. AAA больше подходит для юнит-тестов, где важна четкая структура, а GWT — для тестов, ориентированных на поведение, где важна ясность и доступность для всех участников проекта, включая бизнес-аналитиков и разработчиков.

Тема: Тестовая документация
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки