What is code coverage in java

How to Generate Code Coverage Report with JaCoCo in Java Application?

Testing is a most important part of a software development lifecycle. Without testing, the software is not ready for deployment. To test Java applications we mostly used Junit. JUnit framework is a Java framework that is used for testing. And now, JUnit is used as a standard when there is a need to perform testing in Java. But what is Code Coverage and what is JaCoCo? Code Coverage is a software metric that is used to measure how many lines of our code are executed during automated tests. In other words, we can also say Code Coverage describes the percentage of code covered by automated tests and it checks which parts of code run during the test suite and which don’t.

JaCoCo stands for Java Code Coverage. It is a free code coverage library for Java, which has been created by the EclEmma team. It creates code coverage reports and integrates well with IDEs like IntelliJ IDEA, Eclipse IDE, etc. JaCoCo also integrates with CI/CD tools like Jenkins, Circle CI, etc., and project management tools like SonarQube, etc. So in this article, we are going to create a sample Java application and generate the code coverage report with the help of the JaCoCo maven plugin.

  1. Create a simple Java application
  2. Jot down some test cases inside the application
  3. Add the JaCoCo maven plugin
  4. Update code after adding the JaCoCo plugin
  5. After adding the dependency click on the Maven option
  6. Select clean and test
  7. Select the run button (Green color triangle)
  8. Navigate for code coverage.
Читайте также:  Html расположение данных css

Step by Step Implementation

Step 1: Create a simple Java application and write down some test cases inside the application using Junit or you can also use Mockito.

Related article: You may refer to this article How to Write Test Cases in Java Application using Mockito and Junit? and create a sample project.

Step 2: Add the JaCoCo maven plugin to your pom.xml file.

The plugins for the JaCoCo is given below is as follows:

Источник

Code Coverage

Code coverage means measuring how much of your code is executed during your unit tests. Basically, that means that after running your unit tests, you get a report showing you how many percent of the code that was executed during the tests, and also what lines precisely that were executed.

With the code coverage report in hand, you can analyse what parts of your code that was not run, and modify your unit tests so these parts of the code are executed.

The larger the coverage, the closer to 100%, that is, the better chances you have of having bug free code. Having a 100% code coverage though, is not a guarantee that your code is bug free. For instance, code coverage does not guard against bugs that are caused by incorrect implementations of the requirements. The code may work just fine, but if it’s not what the client asked for, it’s still a bug.

To measure code coverage you need a coverage tool. Here is a small, but probably not exhaustive, list of code coverage tools for Java:

  • IntelliJ IDEA Coverage
  • Emma — http://emma.sourceforge.net/
  • EclEmma — http://www.eclemma.org/

IntelliJ IDEA has built-in code coverage from version 7.0. IntelliJ IDEA both has its own code coverage engine, and it can use Emma.

Emma is an open source code coverage tool for Java. You can run it as part of your Ant or Maven builds.

EclEmma is Emma in Eclipse.

I’ll get into more detail with some of these coverage tools.

Источник

Code Coverage

Java-университет

Code Coverage - 1

Приветствую, друзья, коллеги и. пингвины! Сегодня мы поговорим о Code Coverage, разберемся что это, зачем он нужен и как прокачать свой open-source project предоставив статистику Code Coverage. Эта статья является лаконическим продолжением предыдущей об Continuous Integration. Здесь мы узнаем еще одно сильное преимущество CI в сочетании с. а скоро узнаете с чем сами! Подчеркну лишь то, что здесь не будет указаний как правильно писать тесты для своих программ, и как добиваться максимально возможного полезного покрытия, этот весь грех останется лишь на ваших плечах. Итак, погнали!

Что такое Code Coverage?

Code Coverage (покрытие кода) — это некая величина, показывающая нам процент выполненного исходного кода, во время тестирования. Окей, тут вроде бы всё ясно. Процент Code Coverage (покрытие кода, дальше просто CC) может колебаться от 0 до 100, и может возникнуть вопрос, нужно ли стремиться к максимальному проценту CC? Мой ответ таков: и да и нет. Почему так? Допустим вы создаете проект который будет использоваться некими другими проектами, в нем полно функционала, и среди всего ужаса есть геттеры и сеттеры, и их не мало. При покрытии функционала покрылись не все, допустим, геттеры, но вы точно знаете, что те, которые не покрылись, и не вызываются в вашем проекте, но геттеры не всегда пишутся «для себя», поэтому они нужны для «клиента». Что же делать? Покрыть каждый геттер отдельно? Это будет не эффективное тестирование. Но если не покрыть их, мы не добьемся максимального процента CC. Здесь возникает палка двух концов.

Зачем нам нужно Code Coverage?

  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 должно было появиться что то вроде того:

       org.jacoco jacoco-maven-plugin 0.8.1   prepare-agent   report test report     

    И в Maven Projects в списке плагинов появится JaCoCo Plugin:

    Code Coverage - 2

    Code Coverage - 3

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

    Code Coverage - 4

  2. Подходим к завершению. Мы видим что все работает прекрасно, осталось лишь убедится что это «все прекрасно» также будет работать на внешних источниках. Настала пора собрать все в кучу. Собираем проект и делаем push на GitHub, перед этим открыв Travis CI и Codecov для мониторинга происходящего. После push мы видим что сборка успешная: Code Coverage - 5И результат JaCoCo плагина о покрытии кода: Code Coverage - 6
  3. Помните нашу задачу? Да, да, мы забыл про бейджик. Я хотел вынести тему «Украшение» open-source project’ов в отдельную статью, но маленькую часть все же оставлю здесь. Итак, пошаговая инструкция что бы не заблудится:
    1. Переходим на сайт Codecov;
    2. Выбираем проект, который вам нужно;
    3. Выбираем Setting: Code Coverage - 7
    4. Выбираем Badge и видим ссылки на ваш бейджик в несколько различных формах представления: Первые это стандартные бейджики, их можно вставить, например, в ваш README.md: Code Coverage - 8Их особенность в том что при кликании на них вас будет перенаправлять на страницу с отчетом о CC; Вторые это графы, таблицы и тому подобные штуки: Code Coverage - 9

Полезные ссылки

  • Мой тестовый проект, который вы можете скачать, посмотреть, оценить. Все по этой статье находится в branch: JaCoCo;
  • Java Code Coverage Tools;
  • Альтернативы JaCoCo;
  • JaCoCo Library;
  • JaCoCo Maven Plugin Dependency;
  • Codecov туториал по настройке;
  • Собственно настройка самого JaCoCo;
  • Настройка Cobertura;
  • Следующая статья (Markdown)
  • Предыдущая статья (Continuous Integration)

Могут быть ошибки, ОтЧиПяТкИ в тексте. Всем спасибо за внимание!

Источник

Оцените статью