Gradle Jacoco код покрытия - затем опубликовать / показать в Jenkins

Я пытаюсь настроить покрытие кода для проекта приложения 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 Test ") чтобы получить покрытие кода для / через использование модульных тестов. Пожалуйста, посоветуйте / исправьте. Код (только для тестового модуля Gradle jacoco) - I 'м с помощью это:

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 IntegrationTest " или же "Gradle Test " Задача, а затем остановить кота - получить отчет о покрытии кода. Из других постов в блоге я также обнаружил, что нужно установить переменную 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)

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