Проверяет понимание табличного тестирования как подхода к организации тестовых случаев в виде таблиц.
Табличное тестирование (table-driven tests) — это методика организации модульных тестов, при которой набор тестовых сценариев представляется в виде таблицы или массива структур. Каждая запись таблицы содержит входные параметры, ожидаемый результат и, при необходимости, имя теста. Основная тестовая функция итерирует по этим записям и выполняет проверки для каждой.
Этот подход особенно популярен в языках с сильной типизацией, таких как Go, но применим и в других языках (Java, Python, JavaScript). Он позволяет отделить данные тестов от логики их выполнения, что делает тесты более компактными и легко расширяемыми.
Вместо написания отдельной функции для каждого тестового случая, вы определяете срез (или массив) структур, где каждая структура описывает один случай. Затем в цикле вы вызываете тестируемую функцию и сравниваете результат с ожидаемым. Если тест не проходит, выводится сообщение с именем случая и деталями.
// Пример на Go
func TestAdd(t *testing.T) {
tests := []struct {
name string
a, b int
want int
}{
{"positive", 2, 3, 5},
{"negative", -1, -2, -3},
{"zero", 0, 0, 0},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := Add(tt.a, tt.b)
if got != tt.want {
t.Errorf("Add(%d, %d) = %d, want %d", tt.a, tt.b, got, tt.want)
}
})
}
}Табличное тестирование широко применяется в unit-тестировании, особенно при проверке функций с множеством входных комбинаций. Оно хорошо сочетается с подходами TDD и BDD, так как позволяет быстро покрыть множество сценариев.
Используйте табличное тестирование, когда нужно проверить функцию с большим количеством различных входных данных и ожидаемых результатов. Это делает тесты структурированными, легко расширяемыми и понятными для всей команды.