2017-02-16 66 views
2

我的代碼結構如下:如何使用Jacoco和多個模塊在Jenkins中進行代碼覆蓋?

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

在爲jacoco構建腳本,它首先複製所有類和使用該類目錄來運行該工具。你能否在這裏描述目標目錄的步驟。我的意思是我該如何提及運行代碼覆蓋的目錄。

生成後,每個文件夾都有自己的目標文件夾,其中有類。

步驟如下:

  1. 構建項目作爲詹金斯工作
  2. 將其部署到用戶級
  3. 在詹金斯運行jacoco報告工作

Jacoco報告作業解釋:

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

  2. 後的步驟 - 執行shell

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

  3. 調用頂級行家的目標 - 行家3.3.3 -f jacoco_pom.xml jacoco:轉儲antrun:run @ report

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

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

,並設置clsDir = target/classes

這樣,我得到了模塊上的報告。我的測試套件只包含一個課程。我想要包含其他模塊,如events,other-code,並且還鏈接了源代碼。

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

編輯:

答:下面的回答幫助,但它是所有做與shell命令沒有任何UI。因此,克隆回購,做mvn clean package -DskipTests和複製所有模塊文件夾中的所有第一級子文件夾幫助,但它然後顯示覆蓋率錯誤類文件的執行數據不匹配。這意味着我們用於覆蓋的類以及我們用於覆蓋的類是由不同的JVM(一個在Jenkins中另一個在舞臺中部署的)分開構建的。

因此,解決方案是不克隆和重新編譯它們,而是從部署存儲庫下載清單並解包所有罐子。這樣我就擁有了同一版本中的所有類。

+0

你指的是一些「構建腳本」,但IMO不清楚這意味着什麼 - 有很多種構建工具,並且根據構建工具執行JaCoCo的方法很多 - Maven Plugin,Ant Tasks等。你能否請澄清你的問題,最好用一個更簡潔的例子 - 見http://stackoverflow.com/help/mcve? – Godin

+0

請立即檢查。 – xploreraj

回答

2

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

舉例來說,如果你想包括目錄「事件」下的任何類和「其他代碼」,你將以下添加到「路徑類目錄」部分:

**/events,**/other-code 

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

這是我的工作JaCoCo插件配置:Example JaCoCo Plugin Configuration

編輯:你可能想要做的就是運行清理生成MVN目標,那麼每個模塊的對象複製到被稱爲「類公共目錄什麼」。通過這種方式,所有課程都將處於一個共同的位置,在分析覆蓋率結果時可由jacoco引用。

+1

它在某種程度上有所幫助。感謝提示。我所做的是運行mvn目標進行清理構建,然後將每個模塊的'target'複製到一個名爲'classes'的公共目錄中,這樣所有類都在一個共同的位置,可以在分析覆蓋率時由jacoco引用。 – xploreraj

+1

如果您使用管道和Jenkinsfile,請參閱: https://stackoverflow.com/a/48685604/1279002 – theINtoy

相關問題