Gradle Jacoco код покрытия - затем опубликовать / показать в Дженкинс
Я пытаюсь настроить покрытие кода для проекта приложения Java.
Название проекта: NewApp
Структура проекта:
src / java / ** (исходный код)src / java-test (юнит-тесты - Jnuit)test / it-test (интеграционный тест)тест / аттесты (приемочные испытания)tomcat / * (содержит сценарии запуска / остановки tomcat)Папки xx / .. etc, которые требуются для обычного приложения.Версия Gradle: 1.6
Окружение: Linux
У меня есть работающий скрипт сборки gradle, который извлекает зависимости приложения (NewApp) (то есть сервисные jar-файлы, используемые приложением для процесса сборки) из хранилища артефактов сборки (artifactory / maven для ex) и создает приложение.
Теперь я хотел получить покрытие кода с помощью плагина JaCoCo для моего проекта приложения NewApp.
Я следовал за документацией по Gradle / Jacoco, но, похоже, она не создает папку отчетов / ... для jacoco и т. Д., Где я могу найти отчет о покрытии Jacoco.
Мои вопросы: 1. Для получения покрытия кода с использованием модульных тестов (Junit) я предполагаю, что все, что мне нужно сделать, это следующее, и мне НЕ потребуется запускать / останавливать tomcat перед запуском модульного теста (тестовое задание, то есть «тест gradle») ) чтобы получить покрытие кода для / через использование модульных тестов. Пожалуйста, посоветуйте / исправьте. Код (только для тестового модуля Gradle jacoco), который я использую:
apply plugin: 'jacoco'
test {
include 'src/java-test/**'
}
jacocoTestReport {
group = "reporting"
description = "Generate Jacoco coverage reports after running tests."
reports {
xml.enabled true
html.enabled true
csv.enabled false
}
//classDirectories = fileTree(dir: 'build/classes/main', include: 'com/thc/**')
//sourceDirectories = fileTree(dir: 'scr/java', include: 'com/thc/**')
additionalSourceDirs = files(sourceSets.main.allJava.srcDirs)
}
и для интеграционных испытаний:
task integrationTest(type: Test) {
include 'test/java/**'
}
Поскольку jacocoTestReport зависит от тестовых заданий, они сначала будут вызываться, а затем, наконец, jacocoTestReport сообщит, что было найдено для покрытия кода.
Для получения покрытия кода для интеграционных тестов, я предполагаю, что я должен сначала запустить tomcat (т.е. перед запуском / вызовом цели тестирования для интеграционных тестов), затем вызвать задачу «gradle интеграцииTest» или «gradle test» и затем остановить tomcat - чтобы получить код отчет о покрытии. Из других постов в блоге я также обнаружил, что нужно установить переменную JAVA_OPTS для назначения агента jacoco перед запуском tomcat.Например: установка переменной JAVA_OPTS, например:
export JACOCO="-Xms256m -Xmx512m -XX:MaxPermSize=1024m -javaagent:/production/jenkinsAKS/jobs/NewApp/workspace/jacoco-0.6.3.201306030806/lib/jacocoagent.jar=destfile=/production/jenkinsAKS/jobs/NewApp/workspace/jacoco/jacoco.exec,append=true,includes=*"
export JAVA_OPTS="$JAVA_OPTS $JACOCO"
Будучи новичком в Gradle / groovy - я не уверен, какой код я должен написать в build.gradle (сценарий сборки), чтобы заставить работать вышеупомянутые интеграционные / модульные тесты, если он включает запуск / останов tomcat. Если кто-то может предоставить образец сценария для этого, я попробую.
Я не получаю никакого покрытия кода прямо сейчас, когда я публикую покрытие кода Jacoco в Jenkins (используя действие постобработки Jenkins для публикации отчетов Jacoco). Панель инструментов сборки Jenkins показывает 0% для покрытия кода (то есть столбцы, отображающие весь красный цвет, но не зеленый для фактического покрытия кода).
Нужен ваш совет, чтобы получить некоторую тягу на этом.