Чтобы спокойно спать по ночам разработчикам нужно писать тесты. Много тестов. И один из способов проверять себя - это следить за процентным покрытием тестами кода.
В нормальном проекте, в котором есть время на их написание, обычно планка идет от 80% и выше, но не больше чем 95%. Здесь не нужно упарываться и доводить эту планку до 100%.
Да, я знаю, что даже 100% покрытие тестов не гарантирует, что наш код оттестирован полностью. Но это и не цель - цель понимать, какое кол-во кода ВООБЩЕ НЕ ТЕСТИРУЕТСЯ. Это очень важный пункт и его нужно понимать. То есть если у нас покрытие 49%, то это значит, что в 51% кода тесты вообще не бывали и как там оно работает одному богу известно. А это в свою очередь гарантирует, что могут быть тривиальные дефекты, проблемы с рефакторингом и прочие "радости" побочки при отсутствии тестов.
Самый быстрый и простой способ следить за этим - это добавить JaCoCo (Java Code Coverage) плагин. Он поможет нам в этом деле.
Покажу на примере работы с gradle, благо там все просто. Нужно добавить следующую кодовую часть в build.gradle:
В секцию плагинов добавить плагин JaCoCo:
plugins {
...
id 'jacoco'
...
}
Далее еще настройки, коих по началу хватит с головой, чтобы решить эту проблему:
jacoco {
toolVersion = "0.8.7"
}
test {
finalizedBy jacocoTestReport
}
jacocoTestReport {
reports {
xml.enabled true
html.enabled true
csv.enabled false
}
}
jacocoTestCoverageVerification {
violationRules {
rule {
limit {
// минимальное покрытие тестами в процентах
minimum = 0.50
}
}
}
}
check.dependsOn jacocoTestCoverageVerification
И все, теперь при запуске билда gradle clean build если покрытие будет меньше 50%, то выйдет ошибка такая:
* What went wrong:
Execution failed for task ':your-project:jacocoTestCoverageVerification'.
> Rule violated for bundle your-project: instructions covered ratio is 0.49, but expected minimum is 0.50
И все, дело в шляпе. Далее дело уже за вами.
Или еще не все? Да, еще нет!
Теперь, как в примере нужно не просто поддерживать необходимое покрытие кода, но думать о том, как его улучшать. Понятное дело, что сразу же взять и покрыть недостающую часть кода тестами не так то и просто, а мы не имеем достаточных ресурсов, чтобы одним махом решить эту проблему, то тогда делать это нужно итеративно. Шаг за шагом. От спринта к спринту поднимать планку на 3-5 процентов и таким образом решить эту задачу постеленно.
И тогда через 3-4 месяца можно будет сказать, что теперь все хорошо.
Разумеется всех желающих сказать свое мнение приглашаю в коменты)
Всем желающих приглашаю в свой телеграм канал: Джавист Роман | Подписаться
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ