2017-05-26 43 views
2

我創建了一個簡單的場景,與來源,測試和配置。我目前的設置無法達到聲納100%的代碼覆蓋率,即使它應該是。 (鏈接到存儲庫源 - https://bitbucket.org/sloukam/gradle-multiproject-coverage-sonar/src無法在聲納達到100%的代碼覆蓋率爲我的gradle這個多重+的java +常規+三葉草+ sonarqube

  • 這是一個有點複雜 - 它是搖籃多項目,其來源和測試在Java和Groovy混合。
  • 測試與源類在同一個模塊中,有時測試位於「通用」測試模塊(我們稱之爲集成測試模塊),並且相應的源位於其模塊中(在這種簡單情況下,模塊爲source_module_one和source_module_two。
  • 一些消息來源是用Java編寫,並覆蓋Groovy的測試,反之亦然。

花了很多時間後我不能在我的本地聲納100%的代碼覆蓋率看到的。我真的很感激有助於達到100%代碼覆蓋率的目標。是否可以使用我的項目結構?使用任何其他覆蓋率插件?

回答

2

首先,你當然應該重新考慮在源碼相同的目錄下進行測試。爲了未來的理智,我會將測試分隔在不同的目錄中。此外,如果您的測試與您的來源相關,那麼它們將被計爲,作爲源文件。所以你需要測試你的測試,並測試你的測試測試,......無窮無盡。

除此之外,儘管100%的覆蓋率是聖盃任務。堅持自己的高標準是件好事,但在某個時候,你會遇到收益遞減的規律。相反,我會將要求設置爲... 90%? 92%? 95%?

+1

100%?這是聖盃任務蝙蝠俠! –

+0

100%覆蓋率 - 我想說的是所有的演示類都包含在測試中,因此我期望100%的覆蓋率在這個演示案例中是正確的。在真實的項目中,就像你寫的一樣。 – slon

+0

爲什麼測試與源類不在同一文件夾/模塊中?因爲在這種情況下,測試非常簡單,但在我們的實際情況中,一個測試(集成)覆蓋/測試來自不同模塊的更多類。這個愚蠢的演示案例只是爲了看看哪些類似乎被測試所揭示。組合java-groovy(反之亦然)測試在不同的模塊比源文件...這些的組合... – slon

1
  • 基本上我們在這裏解決的是典型的單元測試/集成測試場景。你有你的模塊裏面的單元測試,但那麼你有另一個模塊/項目運行集成測試,你希望看到合併範圍
  • 這可以很容易地真正解決在SonarQube 6.2+,因爲它引入了新的屬性sonar.jacoco.reportPaths - 這需要多報告文件併合並它們。
  • 在較低版本SonarQube的

    ,你可能有合併這兩個單元測試和集成測試報告文件合併成一個,用JacocoMerge。在我們的項目中,我添加了這個任務:

    任務jacocoMerge(類型:JacocoMerge){ 子項目{子項目 - > executionData文件樹(subproject.buildDir)條.include( 「/ jacoco/*執行」。) } }

它生成報告文件,合併所有模塊的所有報告到projectRoot/build/jacoco/jacocoMerge.exec。現在,您可以使用該文件的絕對路徑作爲sonar.jacoco.reportPath用於要分析的所有模塊。

相關問題