gradle jacocoTestReport 不工作?
gradle jacocoTestReport is not working?
我尝试使用 gradle jacoco 插件在 spring-gradle 项目中获得代码覆盖率。
build.gradle包含以下内容
apply plugin: "jacoco"
jacoco {
toolVersion = "0.7.1.201405082137"
reportsDir = file("$buildDir/customJacocoReportDir")
}
jacocoTestReport {
reports {
xml.enabled false
csv.enabled false
html.destination "${buildDir}/jacocoHtml"
}
}
然后我运行
gradle test jacocoTestReport
在 build/reports 文件夹中仅生成文件 test.exec。
除此之外什么也没有发生。
如何获取 HTML 报告?
以下帮助。它在 gradle-2.3-all.zip 的 samples/testing/jacaco 来自 https://gradle.org/releases/
apply plugin: "java"
apply plugin: "jacoco"
jacoco {
toolVersion = "0.7.1.201405082137"
reportsDir = file("$buildDir/customJacocoReportDir")
}
repositories {
mavenCentral()
}
dependencies {
testCompile "junit:junit:4.+"
}
test {
jacoco {
append = false
destinationFile = file("$buildDir/jacoco/jacocoTest.exec")
classDumpFile = file("$buildDir/jacoco/classpathdumps")
}
}
jacocoTestReport {
reports {
xml.enabled false
csv.enabled false
html.destination "${buildDir}/jacocoHtml"
}
}
您不必配置 reportsDir/destinationFile
因为 jacoco 有它们的默认值。
build.gradle:
plugins {
id 'java'
id 'jacoco'
}
jacocoTestReport {
reports {
xml.enabled true
html.enabled true
csv.enabled true
}
}
repositories {
jcenter()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
}
运行 gradle test jacocoTestReport
您可以在./build/reports/jacoco/test
目录中找到测试报告。
HTML 输出在 ./build/reports/jacoco/test/html
目录中。
subprojects {
apply(plugin: 'org.jetbrains.kotlin.jvm')
repositories {
jcenter()
mavenCentral()
}
}
task codeCoverageReport(type: JacocoReport) {
// Gather execution data from all subprojects
executionData fileTree(project.rootDir.absolutePath).include("**/build/jacoco/*.exec")
// Add all relevant sourcesets from the subprojects
subprojects.each {
sourceSets it.sourceSets.main
}
reports {
xml.enabled true
html.enabled true
csv.enabled false
}
}
// always run the tests before generating the report
codeCoverageReport.dependsOn {
subprojects*.test
}
sonarqube {
properties {
property "sonar.projectKey", "your_project_key"
property "sonar.verbose", true
property "sonar.projectName", "Your project name"
property "sonar.coverage.jacoco.xmlReportPaths", "${rootDir}/build/reports/jacoco/codeCoverageReport/codeCoverageReport.xml"
}
}
运行 测试覆盖率的命令:
./gradlew codeCoverageReport
./gradlew sonarqube -x test (test is excluded since already run and sonarqube by default executes test)
第二个命令如果没有使用sonarqube可以忽略
使它起作用的两点需要注意:
- 为了使所有模块的源集可用,遍历子项目和积累源集有效。 subprojects.sourceSets.main.allSource.srcDirs 无效。
- sonar.jacoco.reportPaths 已 弃用 。我们需要使用 sonar.coverage.jacoco.xmlReportPaths。在此处查看文档
不幸的是,none 这些答案对我有用。
我遇到了类似的问题。
唯一不同的是没有生成 exec 文件。
正因为如此,
我发现 jacocoTestReport 只是“skipped”。
我通过添加修复了它:
apply plugin: 'jacoco'
test {
useJUnitPlatform()
finalizedBy jacocoTestReport // report is always generated after tests run
}
jacocoTestReport {
...
...
...
...
}
那是因为我正在使用 Junit5 和 spring 启动 2.X
我尝试使用 gradle jacoco 插件在 spring-gradle 项目中获得代码覆盖率。
build.gradle包含以下内容
apply plugin: "jacoco"
jacoco {
toolVersion = "0.7.1.201405082137"
reportsDir = file("$buildDir/customJacocoReportDir")
}
jacocoTestReport {
reports {
xml.enabled false
csv.enabled false
html.destination "${buildDir}/jacocoHtml"
}
}
然后我运行
gradle test jacocoTestReport
在 build/reports 文件夹中仅生成文件 test.exec。
除此之外什么也没有发生。
如何获取 HTML 报告?
以下帮助。它在 gradle-2.3-all.zip 的 samples/testing/jacaco 来自 https://gradle.org/releases/
apply plugin: "java"
apply plugin: "jacoco"
jacoco {
toolVersion = "0.7.1.201405082137"
reportsDir = file("$buildDir/customJacocoReportDir")
}
repositories {
mavenCentral()
}
dependencies {
testCompile "junit:junit:4.+"
}
test {
jacoco {
append = false
destinationFile = file("$buildDir/jacoco/jacocoTest.exec")
classDumpFile = file("$buildDir/jacoco/classpathdumps")
}
}
jacocoTestReport {
reports {
xml.enabled false
csv.enabled false
html.destination "${buildDir}/jacocoHtml"
}
}
您不必配置 reportsDir/destinationFile
因为 jacoco 有它们的默认值。
build.gradle:
plugins {
id 'java'
id 'jacoco'
}
jacocoTestReport {
reports {
xml.enabled true
html.enabled true
csv.enabled true
}
}
repositories {
jcenter()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
}
运行 gradle test jacocoTestReport
您可以在./build/reports/jacoco/test
目录中找到测试报告。
HTML 输出在 ./build/reports/jacoco/test/html
目录中。
subprojects {
apply(plugin: 'org.jetbrains.kotlin.jvm')
repositories {
jcenter()
mavenCentral()
}
}
task codeCoverageReport(type: JacocoReport) {
// Gather execution data from all subprojects
executionData fileTree(project.rootDir.absolutePath).include("**/build/jacoco/*.exec")
// Add all relevant sourcesets from the subprojects
subprojects.each {
sourceSets it.sourceSets.main
}
reports {
xml.enabled true
html.enabled true
csv.enabled false
}
}
// always run the tests before generating the report
codeCoverageReport.dependsOn {
subprojects*.test
}
sonarqube {
properties {
property "sonar.projectKey", "your_project_key"
property "sonar.verbose", true
property "sonar.projectName", "Your project name"
property "sonar.coverage.jacoco.xmlReportPaths", "${rootDir}/build/reports/jacoco/codeCoverageReport/codeCoverageReport.xml"
}
}
运行 测试覆盖率的命令:
./gradlew codeCoverageReport
./gradlew sonarqube -x test (test is excluded since already run and sonarqube by default executes test)
第二个命令如果没有使用sonarqube可以忽略
使它起作用的两点需要注意:
- 为了使所有模块的源集可用,遍历子项目和积累源集有效。 subprojects.sourceSets.main.allSource.srcDirs 无效。
- sonar.jacoco.reportPaths 已 弃用 。我们需要使用 sonar.coverage.jacoco.xmlReportPaths。在此处查看文档
不幸的是,none 这些答案对我有用。
我遇到了类似的问题。
唯一不同的是没有生成 exec 文件。
正因为如此,
我发现 jacocoTestReport 只是“skipped”。
我通过添加修复了它:
apply plugin: 'jacoco'
test {
useJUnitPlatform()
finalizedBy jacocoTestReport // report is always generated after tests run
}
jacocoTestReport {
...
...
...
...
}
那是因为我正在使用 Junit5 和 spring 启动 2.X