Sonar + Jacoco,強悍的UT, IT 雙覆蓋率統計

ygp8 9年前發布 | 96K 次閱讀 Sonar 代碼分析/審查/優化
 

以前做統計代碼測試覆蓋,一般用Cobertura。以前統計測試覆蓋率,一般只算Unit Test,或者閉上眼睛把Unit Test和Integration Test一起算。

但是,我們已經過了迷信UT的時代,使用嵌入式容器的IT (如Spring Boot所倡導的一整套IT測試體系),對代碼質量和重構的幫助一點都不比UT小(UT本質上不支持重構,UT不支持基于用戶故事的測試。)

但是IT很容易只跑一個用例就跑出40%的覆蓋率來,所以Sonar + Jacoco 這種同時顯示UT和IT測試覆蓋率的組合非常實用。

照抄Sonar自帶的Maven UT/IT示例項目,用maven插件,很容易就能跑出效果來,略。

花了我半天時間的,是如何用Jenkins上的SonarQubeRunner,跑出相同的效果,因為SonarQubeRunner不認識Maven是誰。

網上都是半新半舊,不咸不淡的文章,自己又摸索了一輪,得出一個只要一條不漏,便保證能跑的Jenkins + Maven + Sonar + Jacoco配置

在Jenkins上使用最新的SonarQube Runner 2.4,填入下面的配置

sonar.projectKey=xxx

sonar.projectName=xxx

sonar.projectVersion=xxx

sonar.modules=moduleA,moduleB,IT module C

#這里假設moduleA,moduleB 在根目錄下的一層目錄,Module C在二層目錄下,需額外定義

#moduleC.projectBaseDir=xxx/moduleC

sonar.sourceEncoding=UTF-8

sonar.language=java

sonar.sources=src/main/java

sonar.tests=src/test/java

sonar.binaries=target/classes

#排除一些不想統計的類

#sonar.exclusions=**/*IDL.java

sonar.java.coveragePlugin=jacoco

sonar.junit.reportsPath=target/surefire-reports

sonar.surefire.reportsPath=target/surefire-reports

 本文由用戶 ygp8 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!