Ответ
На моих проектах тестовое покрытие обычно составляло 60-80%. Полностью покрывать код тестами не всегда целесообразно - некоторые вещи (UI, интеграции) сложно тестировать, а выгода не всегда оправдывает затраты.
Пример:
class Calculator {
fun add(a: Int, b: Int) = a + b
}
class CalculatorTest {
@Test
fun testAdd() {
val calc = Calculator()
assertEquals(5, calc.add(2, 3))
}
}
Важнее писать осмысленные тесты для критичной логики, чем гнаться за %.
Ответ 18+ 🔞
А, ну это вечная тема, про которую можно до утра спорить, как два мужика в гараже. Смотри, я тебе как человек, который уже наступил на все грабли, скажу: гнаться за этими процентами покрытия — это как меряться хуями у парадного подъезда. Бессмысленно и смешно.
Вот у меня на проектах тоже обычно 60-80% висит. И знаешь почему? Потому что пытаться покрыть тестами весь UI — это ёперный театр, честное слово. Ты будешь писать тест на каждую кнопку, которая просто цвет меняет, а потом этот тест сломается, потому что дизайнеру приспичило тень добавить. И ты тратишь день, чтобы починить тест, который нихуя не ловил. Овердохуища работы, а толку — ноль, блядь.
Вот смотри на пример, который ты привёл. Calculator.add() — да, ебать мои старые костыли, это логично покрыть. Метод простой, критичный, если сломается — всё посыпется. Для такого тест — святое дело.
Но представь, что у тебя есть метод, который отправляет запрос в какой-нибудь левый API, который падает каждые полчаса. Ты что, будешь для него мокать всё подряд, чтобы тест зелёный был? Да похуй! Ты лучше время потратишь на то, чтобы написать нормальную обработку ошибок и логирование, чтобы потом, когда этот сервис накроется медным тазом, ты быстро понял, в чём дело. Тест тут тебе нихуя не поможет, он будет просто врать, что всё ок.
Самая главная мысль, которую я для себя вынес: пиши тесты для того, что реально страшно сломать. Для бизнес-логики, для расчётов денег, для всяких сложных алгоритмов. А всякую обвязку, UI-компоненты, конфиги — можно и по остаточному принципу. Иначе ты просто превращаешься в обезьяну, которая пишет тесты ради галочки в CI, а не ради реальной пользы. Чувствуешь разницу?
В общем, не слушай этих фанатиков, которые орут, что без 100% покрытия ты полупидор. Лучше иметь 60% осмысленных, живых тестов, которые реально ловят баги, чем 95% хлама, который только мешает жить и отнимает время. Вот и вся философия.