JavaRush /Java Blog /Random-KO /코드 적용 범위
Nikita Koliadin
레벨 40
Днепр

코드 적용 범위

Random-KO 그룹에 게시되었습니다
안녕하세요, 친구, 동료, 그리고... 펭귄 여러분! 오늘 우리는 코드 커버리지코드 적용 범위 - 1 에 대해 이야기하고 그것이 무엇인지, 왜 필요한지, 코드 커버리지 통계를 제공하여 오픈 소스 프로젝트를 업그레이드하는 방법을 알아낼 것입니다. 이 기사는 지속적인 통합 에 관한 이전 기사의 간결한 연속입니다 . 여기서 우리는 CI의 또 다른 강력한 이점을 다음과 결합하여 배울 것입니다. 그리고 곧 무엇이 무엇인지 알게 될 것입니다! 여기서는 귀하의 프로그램에 대한 테스트를 올바르게 작성하는 방법과 가능한 최대 유용한 적용 범위를 달성하는 방법에 대한 지침이 없다는 점만 강조하겠습니다. 이 모든 죄는 귀하의 어깨에만 남을 것입니다. 자, 가자!

코드 커버리지란 무엇입니까?

코드 적용 범위는 테스트 중에 완료된 소스 코드의 비율을 보여주는 특정 값입니다. 좋아요, 여기서는 모든 것이 명확해 보입니다. 코드 적용 범위 백분율은 0에서 100까지이며 다음과 같은 질문이 발생할 수 있습니다. 최대 CC 백분율을 위해 노력해야 합니까? 내 대답은: 예, 아니오입니다. 왜 그런 겁니까? 다른 프로젝트에서 사용할 프로젝트를 생성한다고 가정해 보겠습니다. 이 프로젝트에는 기능이 풍부하고 모든 공포 중에는 getter와 setter가 있으며 그 중 상당수가 있습니다. 기능을 다룰 때 getter가 모두 다루어지는 것은 아니지만 다루지 않은 기능은 프로젝트에서 호출되지 않지만 getter가 항상 "자체적으로" 작성되는 것은 아니므로 " 고객". 무엇을 해야 할까요? 각 게터를 별도로 덮으시겠습니까? 이는 효과적인 테스트가 아닙니다. 하지만 이를 다루지 않으면 최대 CC 비율을 달성할 수 없습니다. 양날의 검이 나오는 곳이다.

코드 커버리지가 필요한 이유는 무엇입니까?

이 질문에 대한 대답은 매우 간단할 것이라고 생각합니다. 모든 코드는 리팩터링이나 기능 추가/변경 시 "보이지 않는" 버그가 발생하지 않고 추적할 수 있도록 테스트가 필요합니다. 우리는 중단점과 디버거가 있는 프레임워크를 실행하여 이 사악한 버그를 포착하지 않을 것입니다. 인생이 너무 짧. 그래서 가장 흥미로운 점은 다음과 같습니다. 과제는 다음과 같습니다. 이전 기사 에서 작성한 오픈 소스 프로젝트 에 CC에 대한 정보를 수집하고 어딘가에서 처리하는 기술을 도입 하고 이 정보를 GitHub에 예를 들어 배지. 모든 소스 코드는 내 GitHub 에 게시됩니다 .
  1. 코드 적용 범위 정보를 하나의 더미로 수집하는 플러그인을 선택하는 것부터 시작해 보겠습니다 . 저는 개인적으로 코드 커버리지에 대한 정보를 수집하는 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