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% для покрытия кода (то есть столбцы, отображающие весь красный цвет, но не зеленый для фактического покрытия кода).

Нужен ваш совет, чтобы получить некоторую тягу на этом.

Ответы на вопрос(2)

Ваш ответ на вопрос