Статьи

Проверка кода модульного тестирования


Легко собрать покрытие кода модульного теста, потому что для него подготовлены все распространенные инструменты.

В этой статье объясняется, как вы можете добавить покрытие модульного теста в ваше приложение Maven за 10 минут.

Мы будем использовать отличную библиотеку покрытия кода Jacoco, чтобы показать, насколько это просто.

Примеры

Все примеры взяты из этой статьи.

http://johndobie.blogspot.com/2011/11/test-doubles-with-mockito.html

Вы можете проверить их здесь

svn co
https://designbycontract.googlecode.com/svn/trunk/examples/testing/test-doubles


С установленным Maven 3 вы можете запустить их с помощью этой команды.

mvn clean package

Что такое Jacoco


Jacoco — это бесплатная библиотека покрытия кода для Java.
http://www.eclemma.org/jacoco/

Я использую его, потому что его очень просто добавить ко всем типам сборки, включая ANT и Maven, а также очень просто добавить в контейнеры Java или автономную JVM.

Как это работает?

Jacoco использует стандартный интерфейс инструментов JVM.
http://java.sun.com/developer/technicalArticles/J2SE/jvm_ti/

Проще говоря, вы присоединяете агента Jacoco к JVM при его запуске. Он был представлен в JDK 5 для мониторинга и профилирования JVM и возможности динамического изменения классов Java по мере их загрузки.

Всякий раз, когда класс загружается, Jacoco может инструктировать класс, чтобы он мог видеть, когда вызывается класс и какие строки вызываются. Вот так и строится статистика покрытия. Это все делается на лету.

По умолчанию файл результатов создается при завершении JVM. Вы также можете запустить агент в режиме сервера, который позволяет запустить дамп результатов.

Прикрепить агента к JVM?

Это очень простой процесс. Вы должны указать, где находится jacoco jar, а затем передать некоторые параметры, чтобы определить, как должен запускаться агент.

-javaagent:[yourpath/]jacocoagent.jar=[option1]=[value1],[option2]=[value2]

Типичный пробег может выглядеть так

-javaagent:jacoco.jar=destfile=${sonar.jacoco.itReportPath},includes=com.dbc.*

Полная ссылка находится здесь.
http://www.eclemma.org/jacoco/trunk/doc/agent.html

Поддержка Jacoco для Maven

Документы для плагина Maven определены здесь.
http://www.eclemma.org/jacoco/trunk/doc/maven.html

Сначала нам нужно добавить сам плагин.

<plugin>
  <groupid>org.jacoco</groupid>
  <artifactid>jacoco-maven-plugin</artifactid>
  <version>0.5.5.201112152213</version>
</plugin>

Затем мы можем определить, где выводятся отчеты jacoco.

  ${basedir}/target/coverage-reports/jacoco-unit.exec
  ${basedir}/target/coverage-reports/jacoco-unit.exec

Наконец, нам нужно определить следующие 2 выполнения, чтобы агент запускался до запуска тестов, а также чтобы убедиться, что задача отчета jacoco запускается при выполнении пакета.

<executions>
  <execution>
    <id>jacoco-initialize</id>
    <goals>
      <goal>prepare-agent</goal>
    </goals>
  </execution>
  <execution>
    <id>jacoco-site</id>
    <phase>package</phase>
    <goals>
      <goal>report</goal>
    </goals>
  </execution>
</executions>

Полный файл pom.xml можно найти здесь.
Pom

Для запуска примеров выполните следующую команду.

mvn clean package 

Полученные результаты.

Результаты опубликованы в / target / site / jacoco.

Оригинальную статью можно найти здесь
http://johndobie.blogspot.com/2012/01/unit-test-code-coverage.html