JavaRush /Blog Java /Random-ES /Cobertura de código
Nikita Koliadin
Nivel 40
Днепр

Cobertura de código

Publicado en el grupo Random-ES
Saludos amigos, compañeros y… ¡pingüinos! Cobertura de código - 1Hoy hablaremos sobre Cobertura de código , descubriremos qué es, por qué es necesario y cómo actualizar su proyecto de código abierto proporcionando estadísticas de Cobertura de código. Este artículo es una continuación lacónica del anterior sobre Integración Continua . Aquí aprenderemos otra poderosa ventaja de la CI en combinación con... ¡y pronto descubrirás con qué! Solo enfatizaré que aquí no habrá instrucciones sobre cómo escribir correctamente pruebas para sus programas y cómo lograr la máxima cobertura útil posible; todo este pecado quedará solo sobre sus hombros. ¡Entonces vamos!

¿Qué es la cobertura del código?

La cobertura de código es un valor determinado que nos muestra el porcentaje de código fuente completado durante las pruebas. Bien, aquí todo parece claro. El porcentaje de cobertura del código puede oscilar entre 0 y 100 y puede surgir la pregunta: ¿debería esforzarse por alcanzar el porcentaje máximo de CC? Mi respuesta es: sí y no. ¿Porqué es eso? Digamos que creas un proyecto que será utilizado por otros proyectos, está lleno de funcionalidades y, entre todo el horror, hay captadores y definidores, y hay bastantes. Al cubrir la funcionalidad, no se cubrieron todos, digamos, los captadores, pero usted sabe con certeza que aquellos que no se cubrieron no se llaman en su proyecto, pero los captadores no siempre están escritos "para sí mismos", por lo que son necesarios para el " cliente". ¿Qué hacer? ¿Cubrir cada captador por separado? Esta no será una prueba efectiva. Pero si no los cubrimos no alcanzaremos el porcentaje máximo de CC. Aquí es donde surge un arma de doble filo.

¿Por qué necesitamos Cobertura de Código?

Creo que la respuesta a esta pregunta será muy simple: cualquier código necesita pruebas para que al refactorizar o agregar/cambiar funcionalidad, no surjan errores "invisibles" y podamos rastrearlos. No ejecutaremos frameworks con puntos de interrupción y depuradores y detectaremos este vil error. La vida es demasiado corta. Ejemplo Entonces, lo más interesante. La tarea es la siguiente: introducir en nuestro proyecto de código abierto , que escribimos en el artículo anterior , una tecnología que recopilará información sobre CC, la procesará en algún lugar y será posible colocar esta información en GitHub en forma de un insignia, por ejemplo. Todo el código fuente se publicará en mi GitHub .
  1. Comencemos eligiendo un complemento para recopilar información de cobertura de código en una sola pila. Yo personalmente elegí JaCoCo , que recopila información sobre la cobertura del código. Pero también hay alternativas .

    Сайт 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:

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

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

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

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

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

    Cobertura de código - 3

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

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

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

    Cobertura de código - 5

    И результат JaCoCo enchufar о покрытии códigoа:

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

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

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

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

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

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

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

      Cobertura de código - 8

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

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

      Cobertura de código - 9
Полезные ссылки Puede haber errores y omisiones en el texto. ¡Gracias a todos por su atención!
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION