Eclipse,Jacoco在gradle配置時的注意事項

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章