246 подписчиков
Да простят меня программисты, теперь поговорим про вопросы тестирования. И сегодня на повестке дня понятие покрытие кода или code / test coverage. Покрытие кода - это такая метрика, которая показывает, какое количество кода было покрыто тестами. Чем выше покрытие кода, тем меньше вероятность ошибок в программе. Но покрытие кода не гарантирует отсутствие ошибок в программе, поэтому не забываем и про высокое покрытие кода модульными тестами и качественное ручное или автоматизирование тестирование...
1 год назад
15,7K подписчиков
Качественное тестирование – залог успешного Java-проекта. В этой статье мы поделимся лучшими практиками, инструментами и методами, которые помогут вам создавать надежный и эффективный код. Разработка программного обеспечения – это комплексный и сложный процесс со множеством разнообразных задач. Среди них не только обеспечение корректной работы системы, но и соблюдение законодательных требований и стандартов индустрии. При этом не менее важны гибкость и экономическая эффективность. Чтобы соответствовать...
1 месяц назад
7 подписчиков
Покрытие тестами и/или Как добавить JaCoCo в проект Gradle

Чтобы спокойно спать по ночам разработчикам нужно писать тесты. Много тестов. И один из способов проверять себя - это следить за процентным покрытием тестами кода.

В нормальном проекте, в котором есть время на их написание, обычно планка идет от 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

И все, дело в шляпе. Далее дело уже за вами.

Разумеется всех желающих сказать свое мнение приглашаю в коменты)

9 месяцев назад