Ответ
Test Suite (набор тестов) — это коллекция тестовых случаев (test cases), объединенных для проверки определенного компонента, пакета или функциональности системы.
В Go, в отличие от некоторых других языков, нет встроенной формальной концепции "Test Suite". Вместо этого, набором тестов обычно считают:
- Все тестовые функции (
Test...
) в одном файле*_test.go
. - Все тесты в одном пакете, запускаемые командой
go test ./...
.
Для логической группировки тестов и создания иерархии внутри одной тестовой функции используется t.Run
. Это самый идиоматичный способ организации "мини-сьютов" в Go.
Пример с использованием t.Run
:
// calculator_test.go
package calculator
import "testing"
// TestCalculator объединяет тесты для калькулятора
func TestCalculator(t *testing.T) {
// Субтест для сложения
t.Run("Addition", func(t *testing.T) {
result := Add(2, 3)
if result != 5 {
t.Errorf("Expected 5, got %d", result)
}
})
// Субтест для вычитания
t.Run("Subtraction", func(t *testing.T) {
result := Subtract(5, 3)
if result != 2 {
t.Errorf("Expected 2, got %d", result)
}
})
}
Сторонние библиотеки:
Для более сложной организации тестов, требующей общего состояния для группы тестов (setup/teardown), часто используют библиотеки, например, testify/suite
. Они предоставляют более привычную объектно-ориентированную структуру для тест-сьютов.