Что такое Test Suite в контексте языка Go?

Ответ

Test Suite (набор тестов) — это коллекция тестовых случаев (test cases), объединенных для проверки определенного компонента, пакета или функциональности системы.

В Go, в отличие от некоторых других языков, нет встроенной формальной концепции "Test Suite". Вместо этого, набором тестов обычно считают:

  1. Все тестовые функции (Test...) в одном файле *_test.go.
  2. Все тесты в одном пакете, запускаемые командой 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. Они предоставляют более привычную объектно-ориентированную структуру для тест-сьютов.