gradle文件:
apply plugin: 'java'
apply plugin: 'jacoco'
dependencies {
compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.5'
// .... 此处省略其它依赖
testCompile group: 'junit', name: 'junit', version: '4.12'
testCompile group: 'org.powermock', name: 'powermock-api-mockito', version: '1.6.5'
testCompile group: 'org.powermock', name: 'powermock-module-junit4', version: '1.6.5'
}
//Set up the Java build
sourceSets {
main {
java {
srcDirs = ['src/main/java']
}
resources {
srcDirs = ['src/main/java']
}
}
test {
java {
srcDirs = ['src/main/java', 'src/test/java']
}
resources {
srcDirs = ['src/test/java']
}
}
}
jacoco {
toolVersion = "0.7.6.201602180812"
}
test {
jacoco {
append = false
}
}
jacocoTestReport {
group = "Reporting"
dependsOn test
afterEvaluate {
classDirectories = files(classDirectories.files.collect {
fileTree(dir: it,
exclude: [
'com/ibm/marketplace/checkout/database/*'
])
})
}
reports {
xml.enabled false
csv.enabled false
html.enabled true
html.destination "${buildDir}/reports/coverage/java"
}
}
evaluationDependsOnChildren()
// create a fat jar
jar {
dependsOn jacocoTestReport
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
}
}
1)其中注意:sourceSets指定的是使用gradle build时build的代码路径,可以在其中分别指定业务java代码和其资源、还可以指定测试类代码路径和其资源
sourceSets {
main {
java {
srcDirs = ['src/main/java']
}
resources {
srcDirs = ['src/main/java']
}
}
test {
java {
srcDirs = ['src/main/java', 'src/test/java']
}
resources {
srcDirs = ['src/test/java']
}
}
}
2) 其中所指定的路径,应该是在eclipse上选中项目名然后通过 new -> Source Folder创建的,创建如src/test/java,应该是必须做new->Source Folder,然后再输入“src/test/java”,这3个目录中任何一个都不能通过其它方式(比如new -> folder)创建。
注意:如果如下的src/main/java是通过new -> Source Folder->创建src/main,再通过new->Package创建其下的java的话
那么test下的,src/test也要通过new-> Source Folder创建,而src/test/下的java只能通过new-> Package创建,也就是main下的和test下的目录对应的层次和创建方式要保持一致,否则可能会出问题,不能正常执行写好的UT
main {
java {
srcDirs = ['src/main/java']
}
resources {
srcDirs = ['src/main/java']
}
}
3)jacocoTestReport下配置的exclude: ['com/ibm/marketplace/checkout/database/*'] 批的是代码覆盖率统计结果是对去掉对这个database包下的代码后进行的统计数据
4)其中除了sourceSets是从项目下的目录开始写相对路径之外,其中路径都是写的在sourceSets中配置后剩下的路径
如exclude: ['com/ibm/marketplace/checkout/database/*'],指的是src/main/java/com/ibm/marketplace/checkout/database/* 这个包,因为src/main/java已经在sourceSets中指定,所以就在exclude中写剩下的相对路径了
5)如下指的是通过gradle创建一个jar包, 其中jacocoTestReport指的是上面配置好的jacocoTestReport代码块,如果不通过dependsOn进行调用,则不会执行这个代码块,也就不会生成代码覆盖率统计报告文件
// create a fat jar
jar {
dependsOn jacocoTestReport
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
}
}
6)如下是,指定生成报告的文件类型和文件位置
reports {
xml.enabled false
csv.enabled false
html.enabled true
html.destination "${buildDir}/reports/coverage/java"
}
html.enabled true表示支持将报告生成html文件,然后存放到项目的build目录下的reports/coverage/java目录下