Что такое 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)
Этот шаблон широко используется в юнит-тестировании. Он делит тест на три четких этапа:
-
Arrange (Подготовка): На этом этапе происходит настройка всех необходимых данных и объектов. Это может включать создание экземпляров классов, настройку начальных значений переменных и подготовку окружения для теста.
-
Act (Действие): Здесь выполняется действие, которое вы хотите протестировать. Это может быть вызов метода или выполнение какой-либо операции, результат которой вы хотите проверить.
-
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) и помогает описывать тесты с точки зрения поведения системы. Он также делится на три этапа:
-
Given (Дано): Описывает начальные условия или состояние системы перед выполнением теста.
-
When (Когда): Описывает действие или событие, которое происходит в тесте.
-
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 — для тестов, ориентированных на поведение, где важна ясность и доступность для всех участников проекта, включая бизнес-аналитиков и разработчиков.
🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!
Подписаться