Ответ
В моей практике не было строгого регламента по покрытию тестами, но мы придерживались разумного баланса. Основной фокус был на критических компонентах (бизнес-логика, API, интеграции) - там стремились к 70-80%. Для менее важного кода (вспомогательные утилиты) допускалось меньшее покрытие.
Пример подхода:
// Важный сервис - тестируем тщательно
func (s *PaymentService) Process(p Payment) error {
if err := p.Validate(); err != nil {
return err
}
// ...
}
// Вспомогательная функция - меньше тестов
func formatCurrency(amount float64) string {
return fmt.Sprintf("$%.2f", amount)
}
Главным критерием была не цифра покрытия, а уверенность в работоспособности кода. Использовали code review и здравый смысл - иногда сложный тест не стоил затрат, а простые сценарии тестировали обязательно.