JavaRush /Java Blog /Random-JA /コードカバレッジ
Nikita Koliadin
レベル 40
Днепр

コードカバレッジ

Random-JA グループに公開済み
こんにちは、友人、同僚、そして...ペンギン! 今日はコード カバレッジコードカバレッジ - 1について説明します。コード カバレッジとは何か、コード カバレッジが必要な理由、そしてコード カバレッジの統計を提供することでオープンソース プロジェクトをアップグレードする方法を理解します。この記事は、継続的インテグレーションに関する前回の記事の簡潔な続きです。ここでは、CI と... の組み合わせのもう 1 つの強力な利点を学びます。それが何であるかはすぐにわかります。ここでは、プログラムのテストを正しく作成する方法や、可能な限り有効なカバレッジを達成する方法については説明しないことだけを強調しておきますが、この罪はすべてあなたの肩に残るだけです。じゃ、行こう!

コードカバレッジとは何ですか?

コード カバレッジは、テスト中に完了したソース コードの割合を示す特定の値です。 さて、ここですべてが明らかになったようです。コード カバレッジ パーセンテージの範囲は 0 ~ 100 ですが、「最大 CC パーセンテージを目指すべきか?」という疑問が生じるかもしれません。私の答えは「はい」であり、「いいえ」です。何故ですか?他のプロジェクトで使用されるプロジェクトを作成するとします。このプロジェクトには機能が豊富で、中でも恐ろしいのがゲッターとセッターであり、その数はかなりの数です。機能をカバーするときに、すべてのゲッターがカバーされているわけではありませんが、カバーされていないものはプロジェクトで呼び出されないことは確かですが、ゲッターは必ずしも「それ自体のために」書かれているわけではないため、「クライアント"。何をするか?各ゲッターを個別にカバーしますか? これでは効果的なテストにはなりません。しかし、それらをカバーしなければ、最大の CC パーセンテージを達成することはできません。ここで両刃の剣が生じます。

なぜコードカバレッジが必要なのでしょうか?

この質問に対する答えは非常に簡単だと思います。リファクタリングや機能の追加/変更の際に「目に見えない」バグが発生せず、追跡できるようにするために、コードにはテストが必要です。ブレークポイントやデバッガーを備えたフレームワークを実行して、この悪質なバグを捕捉することはありません。人生は短すぎる。 それで、最も興味深いことです。タスクは次のとおりです。 前の記事で書いたオープンソース プロジェクトに、CC に関する情報を収集し、どこかで処理するテクノロジーを導入します。これにより、この情報を GitHub の形式で配置できるようになります。たとえばバッジ。すべてのソース コードは私のGitHub に投稿されます。
  1. コードカバレッジ情報を 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