Code Coverage деген эмне?
Code Coverage - бул тестирлөө учурунда аткарылган баштапкы codeдун пайызын көрсөткөн белгилүү бир маани. Макул, бул жерде баары түшүнүктүү окшойт. Коддун камтуу пайызы 0дөн 100гө чейин болушу мүмкүн жана суроо туулат: сиз максималдуу CC пайызына умтулушуңуз керекпи? Менин жообум: ооба жана жок. Эмнеге андай? Сиз башка долбоорлордо колдонула турган долбоорду түздүңүз дейли, ал функционалдык жактан толгон жана бардык коркунучтуу нерселердин арасында алуучулар жана орнотуучулар бар жана алардын бир нечеси бар. Функционалдык функцияларды камтууда, айталы, гетерлердин баары камтылган эмес, бирок сиз камтылбагандар сиздин долбооруңузда аталбагандыгын так билесиз, бирок алуучулар дайыма эле “өздөрү үчүн” деп жазыла бербейт, ошондуктан алар “өздөрү үчүн” керек. кардар». Эмне кылыш керек? Ар бир алуучу өзүнчө жаап жатабы? Бул натыйжалуу сыноо болбойт. Бирок биз аларды камтыбасак, биз максималдуу CC пайызына жете албайбыз. Мына ушул жерден эки миздүү кылыч чыгат.Эмне үчүн бизге Code Coverage керек?
Менимче, бул суроонун жообу абдан жөнөкөй: каалаган codeду рефакторингде же функцияларды кошууда/өзгөрүүдө “көзгө көрүнбөгөн” мүчүлүштүктөр пайда болбошу үчүн тесттен өтүшү керек жана биз аларды көзөмөлдөй алабыз. Биз үзүлүү чекиттери жана мүчүлүштүктөрдү оңдоочулары бар алHowтардан өтпөйбүз жана бул жийиркеничтүү мүчүлүштүктөрдү кармабайбыз. Жашоо өтө кыска. Мисал Ошентип, эң кызыктуусу. Тапшырма бул: Биз мурунку макалада жазган ачык булактуу долбоорго CC жөнүндө маалыматты чогулта турган технологияны киргизип , аны бир жерде иштетип, бул маалыматты GitHub сайтында жайгаштыруу мүмкүн болот. мисалы, төш белги. Бардык баштапкы code менин GitHub сайтымда жайгаштырылат .-
Коддун камтуу маалыматын бир үймөгө чогултуу үчүн плагинди тандоо менен баштайлы . Мен жеке өзүм тандап алган JaCoCo , ал codeдун камтуусу жөнүндө маалымат чогултат. Бирок альтернативалар да бар .
Сайт JaCoCo предлагает нам скачать плагин, но качать мы нечего не будем, ведь мы используем Build System Maven. Заходим в Maven Repository и ищем JaCoCo Plugin. Берем последнюю версию, и вставляем в наш pom.xml зависимость.
Но через dependencies я делать не рекомендую, ведь есть более хороший, более функциональный альтернативный вариант, и даже не один.
-
Заходим CodeCov Setup выбираем язык Java и выбираем Using JaCoCo плагин, и ставим по инструкции.
-
По той же ссылке выбираем Using Maven. Этот вариант будет даже лучше. Cobertura будет извлекать информацию из CI тестов, но увы и тут есть подвох. Все что выше JDK 7 (А на данный момент уже 10 есть) не подойдет. Поэтому мы остановимся на 1 варианте.
В результате в нашем pom.xml должно было появиться что то вроде того:
<!-- JaCoCo plugin --> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.1</version> <executions> <execution> <goals> <goal>prepare-agent</goal> </goals> </execution> <execution> <id>report</id> <phase>test</phase> <goals> <goal>report</goal> </goals> </execution> </executions> </plugin>
И в Maven Projects в списке плагинов появится JaCoCo Plugin:
-
-
Плагин стоит. Все вроде бы замечательно. Но если вы внимательно читали инструкцию по установке JaCoCo plugin, там было указание, добавить в .travis.yml строчку, отвечающую за отправку отчёта plugin на сайт Codecov.
Итак, исходя из Using JaCoCo, нам нужно вписать в наш файл:
after_success: - bash <(curl -s https://codecov.io/bash)
Вписали. Отлично.
-
Все вроде готово, и остались финальные штрихи. Во-первых давайте скомпorруем наш code, и запустим все тесты, причем сделаем это через Lifecycle Maven:
Так How у нас в плагине JaCoCo стоит фаза выполнения test, то должен был появится отчет после выполнения цикла тестов Maven в папке target:
-
Подходим к завершению. Мы видим что все работает прекрасно, осталось лишь убедится что это "все прекрасно" также будет работать на внешних источниках. Настала пора собрать все в кучу. Собираем проект и делаем push на GitHub, перед этим открыв Travis CI и Codecov для мониторинга происходящего.
После push мы видим что сборка успешная:
И результат JaCoCo plugin о покрытии codeа:
-
Помните нашу задачу? Да, да, мы забыл про бейджик. Я хотел вынести тему "Украшение" open-source project'ов в отдельную статью, но маленькую часть все же оставлю здесь.
Итак, пошаговая инструкция что бы не заблудится:
-
Переходим на сайт Codecov;
-
Выбираем проект, который вам нужно;
-
Выбираем Setting:
-
Выбираем Badge и видим ссылки на ваш бейджик в несколько различных формах представления:
Первые это стандартные бейджики, их можно вставить, например, в ваш README.md:
Их особенность в том что при кликании на них вас будет перенаправлять на page с отчетом о CC;
Вторые это графы, таблицы и тому подобные штуки:
-
- Мой тестовый проект, который вы можете скачать, посмотреть, оценить. Все по этой статье находится в branch: JaCoCo;
- Java Code камтуу куралдары ;
- JaCoCo Alternatives ;
- JaCoCo Library ;
- JaCoCo Maven Plugin Dependency ;
- Codecov орнотуу үйрөткүчү ;
- Чындыгында JaCoCo өзүн орнотуу ;
- Кобертураны орнотуу ;
GO TO FULL VERSION