Ответ
Оптимальным считается 70–80% покрытия кода модульными (unit) тестами.
Почему не 100%?
- Стремление к 100% часто приводит к написанию бесполезных тестов для тривиального кода (геттеры, сеттеры, простые
toString()), что увеличивает стоимость поддержки. - Фокус должен быть на качестве тестов, а не на метрике. Лучше иметь 70% содержательных тестов, чем 100% формальных.
Пример разумного подхода:
// Этот метод содержит бизнес-логику — его нужно тестировать.
public class Calculator {
public int add(int a, int b) {
return a + b;
}
}
// А этот тривиальный метод — нет необходимости.
@Override
public String toString() {
return "Calculator";
}
Важно: Высокое покрытие не гарантирует отсутствия дефектов. Критическую логику следует покрывать интеграционными и end-to-end тестами.
Ответ 18+ 🔞
А, ну это классика, блядь! Опять про эти проценты покрытия заговорили. Слушай, как будто вчера родился — все эти цифры, они же с потолка взяты, ёпта!
Так вот, оптимально, говорят, 70–80% покрытия юнит-тестами. А ты что, думал, дохуя надо? Нет, блядь, не дохуя. Потому что если гнаться за соткой, то получается пиздец, а не разработка.
А че не 100%, спросишь? Да потому что, сука, начнёшь тестировать всякую хуйню! Вот смотри: геттер написал, сеттер, какой-нибудь toString() простыню — и давай на него тесты городить! А оно надо? Нет, блядь, не надо! Ты только время тратишь, а потом эту писанину ещё и поддерживать заебёшься. Фокус должен быть на качестве, а не на том, чтобы циферку в отчёте натянуть, как сову на глобус. Лучше пусть будет 70% нормальных, вменяемых тестов, чем 100% ерунды, от которой толку — как от козла молока.
Вот, смотри, пример, чтобы не быть голословным:
// Вот это — да, бизнес-логика, её тестировать надо, тут без вариантов.
public class Calculator {
public int add(int a, int b) {
return a + b;
}
}
// А это что за хуйня? Тривиальный метод. На него тесты писать — себя не уважать.
@Override
public String toString() {
return "Calculator";
}
И главное, запомни раз и навсегда, чувак: высокий процент покрытия — это не волшебная таблетка, ёбана! Он не гарантирует, что багов не будет. Это как смотреть на спидометр и думать, что машина не сломается. Для критической логики нужны ещё и интеграционные тесты, и end-to-end — вот тогда уже можно спать спокойно, а не трястись над одной метрикой.