我正在尝试为Java应用程序项目设置代码覆盖率。Gradle jacoco代码覆盖率 - 然后在Jenkins中发布/显示
项目名称:NEWAPP
项目结构:
- SRC/JAVA/**(源代码)
- 的src/java的测试(单元测试 - Jnuit)
- 测试/ it-test(集成测试)
- test/at-tests(验收测试)
- tomcat/*(包含tomcat启动/停止脚本)
- xx/.. etc文件夹是常用应用程序所必需的。
摇篮版本:1.6
环境:Linux的
我有一个从构建获取应用程序(NEWAPP)的依赖关系(即服务的应用程序的构建过程中使用广口瓶)运行gradle这个构建脚本工件库(artifactory/maven for ex),并构建应用程序。
现在,在这一点上,我想使用JaCoCo插件为我的NewApp应用程序项目获得代码覆盖率。
我遵循每个Gradle/Jacoco的文档,但似乎没有为jacoco等创建任何报告/ ...文件夹,我可以在其中找到Jacoco覆盖报告所做的事情。
我的问题: 1.为了获得使用单元测试(Junit)的代码覆盖率,我假设我所要做的只是以下内容,它不会要求我在运行单元测试之前启动/停止tomcat(测试任务即“gradle测试”)来获取/通过使用单元测试的代码覆盖率。请告知/更正。代码(只是摇篮jacoco单元测试部分) - 我使用的是:
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这个测试”任务,然后停止Tomcat - 获取代码覆盖率报告。从其他博客文章中我也发现应该在tomcat启动之前设置JAVA_OPTS变量来分配jacoco代理。
为前:设置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"
作为新摇篮/ Groovy的 - 我不知道我应该写的build.gradle(编译脚本)内码是什么如果涉及到tomcat的启动/停止,则可以使上述集成/单元测试工作。如果有人可以提供一个示例脚本来做到这一点,我会尝试。
当我在Jenkins中发布Jacoco代码覆盖率(使用Jenkins发布构建操作发布Jacoco报告)时,我没有得到任何代码覆盖。 Jenkins构建仪表板显示代码覆盖率为0%(即条形图显示所有红色,实际代码覆盖率不显示绿色)。
需要您的建议,以获得一些牵引。
其他良好的链接:http://forums.gradle.org/gradle/topics/gradle_1_6_jacoco_in_multi_module_build –