我正在嘗試爲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 –