Retry logic тестируется через dependency injection. Передавай функцию или интерфейс вместо реального вызова. В тесте: mock возвращает ошибку N раз, потом успех — проверяешь что retry сработал. Проверяй: правильное количество попыток, backoff delays (через мок clock), что после max retries возвращается последняя ошибка, что non-retryable ошибки не ретраятся. Пример: attempts := 0; mockFn := func() error { attempts++; if attempts < 3 { return errTemp }; return nil }. Проверь attempts == 3. Тестируй и jitter — что delay не фиксированный.