Назад к вопросам
Andersen
Senior
3
What testing tools, packages, and approaches are commonly used in Go, and how should they be applied in practice?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Go для тестирования чаще всего используют стандартный пакет testing, который позволяет писать юнит-тесты и интеграционные тесты.
Основные инструменты и подходы:
testing— базовый пакет для написания тестов, бенчмарков и примеров.go test— команда для запуска тестов.- Табличные тесты — удобный способ покрыть разные сценарии одним тестом.
- Mocking — для имитации зависимостей используют библиотеки, например,
gomockилиtestify/mock. testify— набор утилит для удобных утверждений (assert,require) и моков.- Покрытие кода — с помощью
go test -coverможно измерить, насколько тесты покрывают код.
Практическое применение:
- Писать тесты сразу при разработке функций.
- Использовать табличные тесты для проверки разных входных данных.
- Мокать внешние зависимости, чтобы тесты были изолированы.
- Писать бенчмарки для критичных по производительности участков.
- Интеграционные тесты запускать с реальными сервисами или их эмуляторами.
Пример табличного теста:
func TestSum(t *testing.T) {
tests := []struct {
name string
a, b int
want int
}{
{"positive", 2, 3, 5},
{"zero", 0, 0, 0},
{"negative", -1, -1, -2},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := Sum(tt.a, tt.b)
if got != tt.want {
t.Errorf("Sum(%d, %d) = %d; want %d", tt.a, tt.b, got, tt.want)
}
})
}
}