создать покрытие кода в тестах JenkinsPipelineUnit - PullRequest
0 голосов
/ 02 января 2019

Я создаю разделяемую библиотеку jenkins (в groovy) и тестирую ее с JenkinsPipelineUnit и в Gradle. Выполнение ./gradlew test jacocoTestReport работает нормально, но отчет почти пуст (только заголовки); нет покрытия.

Вот соответствующие части моего build.gradle:

plugins {
    id 'groovy'
    id 'application'
    id 'jacoco'
}

dependencies {
    compile 'org.codehaus.groovy:groovy-all:2.5.4'
    testCompile 'junit:junit:4.12'
    testCompile 'com.lesfurets:jenkins-pipeline-unit:1.1.1-custom' // minor adaptations, but that's another story
}

test {
    systemProperty "pipeline.stack.write", System.getProperty("pipeline.stack.write")
}

jacocoTestReport {
    group = "Reporting"
    reports {
        xml.enabled true
        csv.enabled false
    }
    additionalSourceDirs = files('vars')
    sourceDirectories = fileTree(dir: 'vars')
}

Думаю, проблема заключается в том, что мои «исходные» файлы находятся в каталоге vars , а не в src / groovy , как и ожидалось в обычном проекте groovy. Это, однако, требование к общей библиотеке Jenkins.

Я пытался указать

sourceSets {
    main {
        groovy {
            srcDir 'vars'
        }
    }
}

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

Моя структура папок выглядит следующим образом:

├── build.gradle
├── src
│   └── test
│       ├── groovy
│       │   └── TestSimplePipeline.groovy
│       └── resources
│           └── simplePipeline.jenkins
└── vars
    ├── MyPipeline.groovy
    └── sh.groovy

Я думаю, что моя проблема связана с https://github.com/jenkinsci/JenkinsPipelineUnit/issues/119, но я не знаю, как использовать изменения, предложенные для maven в Gradle (даже не уверен, что они применимы к jacoco).

...