Легко собрать покрытие кода модульного теста, потому что для него подготовлены все распространенные инструменты.
В этой статье объясняется, как вы можете добавить покрытие модульного теста в ваше приложение 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
Я использую его, потому что его очень просто добавить ко всем типам сборки, включая 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