JavaRush /Java блогы /Random-KK /Кодты қамту
Nikita Koliadin
Деңгей
Днепр

Кодты қамту

Топта жарияланған
Сәлем, достар, әріптестер және... пингвиндер! Бүгін біз Code CoverageКодты қамту - 1 туралы сөйлесетін боламыз , оның не екенін, не үшін қажет екенін және Code Coverage статистикасын беру арқылы ашық бастапқы жобаңызды қалай жаңартуға болатынын анықтаймыз. Бұл мақала Үздіксіз интеграция туралы алдыңғы мақаланың қысқаша жалғасы болып табылады . Мұнда біз CI-ның тағы бір күшті артықшылығын ... біріктіретінін үйренеміз және жақын арада сіз немен екенін білесіз! Мен бұл жерде сіздің бағдарламаларыңыз үшін тесттерді қалай дұрыс жазу және максималды мүмкін болатын пайдалы қамтуға қол жеткізу туралы нұсқаулар болмайтынын атап өткім келеді; бұл күнә тек сіздің иығыңызда қалады. Ендеше, кеттік!

Кодты қамту дегеніміз не?

Кодты қамту - тестілеу кезінде аяқталған бастапқы codeтың пайызын көрсететін белгілі бір мән. Жарайды, мұнда бәрі түсінікті сияқты. Кодты қамту пайызы 0-ден 100-ге дейін болуы мүмкін және сұрақ туындауы мүмкін: ең жоғары CC пайызына ұмтылу керек пе? Менің жауабым: иә және жоқ. Неге бұлай? Сіз кейбір басқа жобаларда қолданылатын жобаны жасайсыз делік, ол функционалдылыққа толы және барлық қорқынышты нәрселердің арасында қабылдаушылар мен орнатушылар бар және олардың біршамасы бар. Функционалдылықты қамтыған кезде, айталық, гетерлердің барлығы қамтылмаған, бірақ қарастырылмағандар сіздің жобаңызда шақырылмағанын анық білесіз, бірақ гетерлер әрқашан «өзі үшін» жазылмайды, сондықтан олар «өздері үшін» қажет. клиент». Енді не істеу керек? Әрбір алушыны бөлек жабу керек пе? Бұл тиімді сынақ болмайды. Бірақ егер біз оларды қамтымасақ, біз максималды CC пайызына жете алмаймыз. Міне, осы жерде екі жүзді қылыш шығады.

Неліктен бізге codeты қамту қажет?

Менің ойымша, бұл сұраққа жауап өте қарапайым болады: кез келген codeты рефакторинг немесе функционалдылықты қосу/өзгерту кезінде «көрінбейтін» қателер пайда болмауы үшін тестілеу қажет және біз оларды бақылай аламыз. Біз үзіліс нүктелері мен отладчиктері бар фреймворктар арқылы өтіп, осы жаман қатені ұстамаймыз. Өмір өте қысқа. Мысал Сонымен, ең қызықтысы. Тапсырма мынада: біз алдыңғы мақалада жазған ашық бастапқы жобамызға CC туралы ақпаратты жинайтын, оны бір жерде өңдейтін технологияны енгізіңіз және бұл ақпаратты GitHub-та файл түрінде орналастыруға болады. мысалы, төсбелгі. Барлық бастапқы code менің GitHub -да жарияланады .
  1. Кодты қамту туралы ақпаратты бір жинаққа жинау үшін плагинді таңдаудан бастайық . Мен жеке codeты қамту туралы ақпаратты жинайтын JaCoCo таңдадым. Бірақ балама нұсқалары да бар .

    Сайт JaCoCo предлагает нам скачать плагин, но качать мы нечего не будем, ведь мы используем Build System Maven. Заходим в Maven Repository и ищем JaCoCo Plugin. Берем последнюю версию, и вставляем в наш pom.xml зависимость.

    Но через dependencies я делать не рекомендую, ведь есть более хороший, более функциональный альтернативный вариант, и даже не один.

    1. Заходим CodeCov Setup выбираем язык Java и выбираем Using JaCoCo плагин, и ставим по инструкции.

    2. По той же ссылке выбираем 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:

    Кодты қамту - 2
  2. Плагин стоит. Все вроде бы замечательно. Но если вы внимательно читали инструкцию по установке JaCoCo plugin, там было указание, добавить в .travis.yml строчку, отвечающую за отправку отчёта plugin на сайт Codecov.

    Итак, исходя из Using JaCoCo, нам нужно вписать в наш файл:

    after_success:
      - bash <(curl -s https://codecov.io/bash)

    Вписали. Отлично.

  3. Все вроде готово, и остались финальные штрихи. Во-первых давайте скомпorруем наш code, и запустим все тесты, причем сделаем это через Lifecycle Maven:

    Кодты қамту - 3

    Так How у нас в плагине JaCoCo стоит фаза выполнения test, то должен был появится отчет после выполнения цикла тестов Maven в папке target:

    Кодты қамту - 4
  4. Подходим к завершению. Мы видим что все работает прекрасно, осталось лишь убедится что это "все прекрасно" также будет работать на внешних источниках. Настала пора собрать все в кучу. Собираем проект и делаем push на GitHub, перед этим открыв Travis CI и Codecov для мониторинга происходящего.

    После push мы видим что сборка успешная:

    Кодты қамту - 5

    И результат JaCoCo plugin о покрытии codeа:

    Кодты қамту - 6
  5. Помните нашу задачу? Да, да, мы забыл про бейджик. Я хотел вынести тему "Украшение" open-source project'ов в отдельную статью, но маленькую часть все же оставлю здесь.

    Итак, пошаговая инструкция что бы не заблудится:

    1. Переходим на сайт Codecov;

    2. Выбираем проект, который вам нужно;

    3. Выбираем Setting:

      Кодты қамту - 7
    4. Выбираем Badge и видим ссылки на ваш бейджик в несколько различных формах представления:

      Первые это стандартные бейджики, их можно вставить, например, в ваш README.md:

      Кодты қамту - 8

      Их особенность в том что при кликании на них вас будет перенаправлять на page с отчетом о CC;

      Вторые это графы, таблицы и тому подобные штуки:

      Кодты қамту - 9
Полезные ссылки Мәтінде қателер мен олқылықтар болуы мүмкін. Назарларыңызға барлығыңызға рахмет!
Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION