Jacoco 與 Jenkins 整合獲取覆蓋率報告
1. Jacoco 的原理可參考官網或網上其他 Jacoco 相關的文章
https://www.eclemma.org/jacoco/trunk/doc/index.html
2. Jacoco 與 Jenkins 整合獲取覆蓋率報告的步驟
2.1 服務啟動命令中,加入 jacoco 的代理引數
如:
[“/bin/sh”,”-c”,”mkdir /project/jacoco && cd /project/jacoco && wget http://search.maven.org/remotecontent?filepath=org/jacoco/jacoco/0.8.5/jacoco-0.8.5.zip -O ./jacoco-0.8.5.zip && unzip jacoco-0.8.5.zip && java -javaagent:/project/jacoco/lib/jacocoagent.jar=dumponexit=true,includes=com.*,output=tcpserver,port=6300,address=0.0.0.0 -jar -Dspring.profiles.active=test /project/start.jar”]
2.2 jenkins 目錄下建立 build.xml
如:/var/lib/jenkins/workspace/build.xml
<!-- reset="true"是指在 dump 完成之後,重置 jvm 中的覆蓋率資料為空。append="true"是指 dump 出來的 exec 檔案為增量方式 -->
2.3 jenkins 中建立任務
-- 建立自由風格任務
-- 拉取服務的程式碼
-- 配置 mvn 命令進行編譯生成 class 檔案
-- 配置 ant 命令進行 dump 拉取覆蓋率資訊
-- 配置 jacoco report 資訊
以上配置完成後,執行任務,可得到覆蓋率報告,如:
但,仍存在問題:被測服務部署的版本與 jenkins 拉取的版本不一致時,會導致覆蓋率報告資訊不準確
3. 解決問題:被測服務部署的版本與 jenkins 拉取的版本不一致
解決方案:為 jenkins 安裝 Dynamic Parameter 外掛,動態獲取測服務的分支及 commitid,作為變數傳遞給 jenkins,從而確保兩邊保持一致
參考:https://blog.csdn.net/A_man_only/article/details/95320389
https://www.jianshu.com/p/dd1b0f5c6a01
Step1:在專案的 pom 檔案中加入外掛:
<plugin>
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId>
</plugin>
驗證:重新部署服務後,透過訪問<專案的訪問 url>/actuator/info 得到返回結果,內含分支資訊及提交版本號資訊,如:
{"git":{"commit":{"time":"2020-07-02T09:11:58Z","id":"bdcae43"},"branch":"master"}}
Step2:Jenkins 任務中配置動態變數,獲取提交版本號 commitId
def response= "curl http://[host]/promotion/actuator/info".execute()
response.waitFor()
def respStr = response.text
def firstIndex = respStr.lastIndexOf("id")+5
def lastIndex = respStr.lastIndexOf("branch")-4
def id=respStr.substring(firstIndex, lastIndex)
Step3:Jenkins 任務中,配置使用 commitId 獲取原始碼
相關文章
- java覆蓋率檢測-jacocoJava
- Jacoco--測試覆蓋率工具
- 覆蓋率檢查工具:JaCoCo 食用指南
- JaCoCo計算程式碼覆蓋率原理
- Android Demo:手工覆蓋率(AS3.2)use JacocoAndroidS3
- vivo 基於 JaCoCo 的測試覆蓋率設計與實踐
- 從零入門專案整合Karate和Jacoco,配置測試程式碼覆蓋率
- 精準測試與開源工具Jacoco的覆蓋率能力對比開源工具
- 程式碼覆蓋率與測試覆蓋率比較
- 基於JaCoCo的Android測試覆蓋率統計(二)Android
- Java 程式碼覆蓋率調研報告Java
- 關於super-jacoco測試覆蓋率具體實現
- PouchContainer 整合測試覆蓋率統計AI
- 基於Jacoco的單元測試程式碼覆蓋率統計
- maven 多模組專案的測試覆蓋率分析 - jacoco 聚合分析Maven
- 如何使用 jacoco 統計多個 docker 容器服務的測試覆蓋率Docker
- 一個測試檔案與原始檔位於不同模組時Jacoco覆蓋率配置的例子
- iOS 覆蓋率檢測原理與增量程式碼測試覆蓋率工具實現iOS
- Java 覆蓋率 Jacoco 插樁的不同形式總結和踩坑記錄Java
- Jacoco 覆蓋率 監測一臺機器上多個 tomcat 怎麼實現Tomcat
- jacoco-1-java程式碼測試覆蓋率之本地環境初體驗Java
- Jenkins+Cobertura程式碼覆蓋率(學習筆記三十七)Jenkins筆記
- idea2022.1 檢視單測覆蓋率展示分支覆蓋率Idea
- pHp程式碼覆蓋率PHP
- Jenkins 整合 allure 報告無資料Jenkins
- Jenkins+allure整合報告構建Jenkins
- 自動化會提高測試覆蓋率,那測試覆蓋率是什麼?
- 什麼是程式碼覆蓋率
- go 程式碼覆蓋率測試Go
- 單元測試接入覆蓋率
- 使用Jacoco統計服務端程式碼覆蓋情況實踐服務端
- 測試開發之單元測試-實現Git增量程式碼的Jacoco覆蓋率統計Git
- 聊聊Go程式碼覆蓋率技術與最佳實踐Go
- Mockito提升單元測試覆蓋率Mockito
- 測試覆蓋率二改實現
- 測試覆蓋率 之 Cobertura的使用
- 如何提高全城wifi訊號覆蓋率WiFi
- 學校報告廳無線覆蓋解決方案