Jen*_*ich 2 code-coverage gradle jenkins jacoco sonarqube
我想展示使用 Gradle 6.0 构建的多个项目 Spring boot 应用程序的测试覆盖率。我们目前使用 JUnit5。
尽管存在一些初步测试,SonarQube 中的测试覆盖率显示为 0%。
顶级项目(https://github.com/OpenReqEU/eclipse-plugin-vogella/blob/master/server/build.gradle)中的 build.gradle 文件具有以下输入:
plugins {
id "org.sonarqube" version "2.7"
id 'jacoco'
}
repositories {
jcenter()
}
subprojects {
apply plugin: 'jacoco'
apply plugin: 'java'
apply plugin: 'eclipse'
repositories {
jcenter()
maven { url 'https://repo.spring.io/snapshot' }
maven { url 'https://repo.spring.io/milestone' }
maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' }
maven { url 'http://oss.jfrog.org/artifactory/oss-snapshot-local/' }
}
jacocoTestReport {
reports {
xml.enabled true
xml.destination file("${buildDir}/coverage-reports/coverage.xml")
//html.destination file("${buildDir}/coverage-reports")
}
}
ext {
springBootVersion = '2.1.1.RELEASE'
}
sourceCompatibility = 1.8
}
wrapper {
gradleVersion = '6.0'
}
Run Code Online (Sandbox Code Playgroud)
在 Jenkins 构建中我们设置以下参数:
sonar.projectKey=eclipse-plugin-vogella
sonar.sources=server/com.vogella.prioritizer.server/src/main,server/com.vogella.prioritizer.server.bugzilla/src/main,server/com.vogella.prioritizer.server.issue.api/src/main
sonar.java.binaries=com.vogella.prioritizer.server/build/classes/java/main,com.vogella.prioritizer.server.bugzilla/build/classes/java/main,com.vogella.prioritizer.server.issue.api/build/classes/java/main
sonar.tests=server/com.vogella.prioritizer.server/src/test,server/com.vogella.prioritizer.server.bugzilla/src/test
sonar.coverage.jacoco.xmlReportsPath=server/com.vogella.prioritizer.server.bugzilla/build/jacoco/test.exec,server/com.vogella.prioritizer.server/build/jacoco/test.exec,server/com.vogella.prioritizer.server.issue.api/build/jacoco/test.exec
Run Code Online (Sandbox Code Playgroud)
构建的结果显示错误: INFO: parsing [/home/jenkins/workspace/issue-prioritizer/coverage-reports/coverage.xml] ERROR: Reports path not find or is not a directory: /home/jenkins/workspace /问题优先级/覆盖率报告/coverage.xml
我看到每个项目都有一个生成的 ${buildDir}/coverage-reports/coverage.xml 文件,但根文件是空的,这是预期的,因为我没有配置与此相关的任何内容。
在某个时刻,我添加了一项复制任务,该任务将一个项目中生成的 xml 文件之一复制到根文件夹中,但构建作业抱怨类不匹配。
有谁知道这个问题如何解决?我假设我必须添加一个配置来添加根coverage.xml 文件,该文件是各个文件的聚合,但我还没有找到解决方案。
我还尝试将 jacoco 应用于根项目,但也失败了,因为根项目不是 Java 项目。
小智 6
需要生成xml格式的报告。将声纳属性添加到 xml 路径,如下所示。
jacocoTestReport {
reports {
xml.enabled true
}
}
sonarqube {
properties {
property "sonar.java.source", "1.8"
property "sonar.java.coveragePlugin", "jacoco"
property "sonar.jacoco.reportPaths", "build/reports/jacoco/test/jacocoTestReport.xml"
}
}
Run Code Online (Sandbox Code Playgroud)
使用 jacocoTestReport 运行 gradle 命令
gradlew sonarqube jacocoTestReport
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7128 次 |
| 最近记录: |