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目錄下