簡體   English   中英

如何使用Jacoco和多個模塊在Jenkins中進行代碼覆蓋?

[英]How to have code coverage in Jenkins with Jacoco and multiple modules?

我的代碼結構如下:

事件
消息
其他代碼
功能性的測試

在jacoco的構建腳本中,首先必須復制所有類並使用該類目錄來運行該工具。 你能否在這里描述目標目錄的步驟。 我的意思是如何提及運行代碼覆蓋的目錄。

在構建時,每個文件夾都有自己的目標文件夾,其中包含類。

以下是步驟:

  1. 在Jenkins建立項目作為工作
  2. 將其部署到用戶階段
  3. 在Jenkins中運行jacoco報告作業

Jacoco報告工作說明:

  1. 構建步驟 - maven 3.3.3目標 - 清除測試和測試套件,用戶階段詳細信息和其他信息。

  2. 發布步驟 - 執行shell

    無法在此格式化和粘貼,所以上傳到這里: https//zerobin.net/?8a988cd05bf3d752#fbzMlW1b7uzD+HZnmwnd9WjQYBI3j95Q7DCIx6q+l0U=

  3. 調用頂級maven目標 - maven 3.3.3 -f jacoco_pom.xml jacoco:dump antrun:run @ report

在shell粘貼中使用的clasDir變量應該有類。 到目前為止,我已經在shell腳本的開頭做了這個。

mkdir -p target/classes
cp -R messages/target/classes target/classes

並設置clsDir = target/classes

這樣我得到了關於該模塊的報告。 我的測試套件只包含一個類。 我想包括其他模塊,如eventsother-code ,也鏈接源。

我需要幫助我應該如何設置它。 主要目的是生成功能測試的代碼覆蓋率報告。

編輯:

答:以下答案有所幫助,但是所有這些都是用shell命令完成的,而不是任何UI。 因此,克隆存儲庫,執行mvn clean package -DskipTests並從所有模塊文件夾復制所有第一級子文件夾,但是它顯示錯誤覆蓋執行數據類文件不匹配 這意味着我們用於覆蓋的類和我們用於覆蓋的類是由不同的JVM(一個在Jenkins中,另一個在舞台中部署)單獨構建的。

所以解決方案是不克隆並重新編譯它們,而是從部署存儲庫下載清單並解壓縮所有jar。 這樣我就擁有了相同版本的所有類。

要通過更改Jenkins JaCoCo插件配置來包含多個類目錄,您需要修改“類目錄路徑”字段。

例如,如果要在“events”和“other-code”目錄下包含任何類,則可以將以下內容添加到“類目錄路徑”部分:

**/events,**/other-code

請記住,如果要添加多個目錄,則必須用逗號分隔每個目錄, 並且不能有空格 (由於插件的錯誤)。 注意:此逗號錯誤適用於此插件配置中的所有文本字段。

這是我工作的JaCoCo插件配置: 示例JaCoCo插件配置

編輯:正如評論中所提到的,這個問題的一個解決方案是利用您正在處理的任何構建工具(Ant,Maven,Gradle)將target (即:jar,war等)放入公共目錄並且只是指向那里的jacoco插件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM