Ответ
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. Они предоставляют более привычную объектно-ориентированную структуру для тест-сьютов.