Ответ
Оптимальным считается 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 тестами.