簡體   English   中英

聲納虛假整體報道(jacoco)

[英]Sonar false overall coverage (jacoco)

我在多模塊Java8項目上運行Jacoco和Sonar。 我在每個模塊中都有單元測試並節省資源我將所有“集成測試”收集到一個“integration-tests-runner”中並在那里運行它們(在測試之前和之后包裝它們)。

測量覆蓋率時,UT會為每個模塊目標/ jacoco-ut.exec生成exec文件,而IT會生成一個exec文件:/target/jacoco-it.exec。

當我運行聲納時,我重用那些exec文件,給出了jacoco-it.exec的路徑。

我得到一個非常奇怪的圖像: 在此輸入圖像描述

怎么可能整體覆蓋率更低?

我發現了問題和解決方案。

從Sonar網站我看到

默認情況下,如果未找到覆蓋率報告,則JaCoCo插件不會為覆蓋率指標設置任何值。 通過設置以下屬性,可以覆蓋此行為以在缺少報告的情況下強制覆蓋率為0%: sonar.jacoco.reportMissing.force.zero=true


這意味着沒有任何測試的模塊會跳過UT分析。 由於我從父pom設置了sonar.jacoco.itReportPath ,因此分析了所有模塊的集成測試覆蓋率和整體覆蓋率。

底線:從父pom設置屬性sonar.jacoco.reportMissing.force.zero=true修復了數字。

為什么這很奇怪? 單元和集成測試執行代碼並且某些執行的代碼塊重疊。 換句話說,單元和集成測試所涵蓋的代碼不是不相交的,因此您不能簡單地添加它們。

暫無
暫無

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

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