Sonar + Jacoco,強悍的UT, IT 雙覆蓋率統計
以前做統計代碼測試覆蓋,一般用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