在JenkinsPipelineUnit测试上生成代码覆盖率

时间:2019-01-02 16:40:43

标签: gradle groovy jacoco jenkins-pipeline-unit

我正在构建一个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 目录中,而不是常规groovy项目中预期的 src / 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有关,但是我不知道如何在gradle中使用对maven提出的更改(甚至不确定它们是否适用于jacoco)。

0 个答案:

没有答案