Ответ
В Go unit-тесты — неотъемлемая часть разработки. Использую стандартный пакет testing + testify для удобных assert'ов. Пишу тесты для:
- Критичной бизнес-логики
- Сложных алгоритмов
- Пограничных случаев
- Ошибок (error paths)
Пример:
func TestAdd(t *testing.T) {
tests := []struct {
a, b, want int
}{
{2, 3, 5},
{0, 0, 0},
{-1, 1, 0},
}
for _, tt := range tests {
got := Add(tt.a, tt.b)
assert.Equal(t, tt.want, got)
}
}
Стараюсь покрывать 70-80% кода, но без фанатизма — иногда интеграционные тесты полезнее. Тесты запускаю через go test -v -cover.