Выпуск 9. JaCoCo - проверка покрытия кода unit-тестами.
Java 1773. Как писать юнит тесты java
При написании юнит-тестов в Java рекомендуется следовать некоторым основным шагам: Пример: import org.junit.Test;
import static org.junit.Assert.*;
public class MyTest {
@Test public void testSum() {
assertEquals(4, 2 + 2);
}
@Test public void testMax() {
int[] numbers = {1, 2, 3, 4, 5};
int max = numbers[0];
for (int i = 1; i < numbers.length; i++) {
if (numbers[i] > max)...
Покрытие тестами и/или Как добавить 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 И все, дело в шляпе. Далее дело уже за вами. Разумеется всех желающих сказать свое мнение приглашаю в коменты) Джавист Роман | Подписаться