3 回答

TA貢獻1796條經驗 獲得超4個贊
我和您處在同一情況下,分散在整個互聯網上的一半答案很煩人,因為似乎很多人都遇到了同樣的問題,但是沒有人會費心去解釋他們是如何解決的。
該聲納的文檔是指 一個GitHub的項目,例子是有幫助的。我要解決的問題是將集成測試邏輯應用于常規單元測試(盡管正確的單元測試應特定于子模塊,但并非總是如此)。
在父pom.xml中,添加以下屬性:
<properties>
<!-- Sonar -->
<sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
<sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
<sonar.jacoco.reportPath>${project.basedir}/../target/jacoco.exec</sonar.jacoco.reportPath>
<sonar.language>java</sonar.language>
</properties>
這將使Sonar拾取同一位置(父項目中的目標文件夾)中所有子模塊的單元測試報告。它還告訴Sonar重用手動運行的報告,而不是滾動自己的報告。我們只需將jacoco-maven-plugin放置在build / plugins內的父pom中,即可為所有子模塊運行:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.6.0.201210061924</version>
<configuration>
<destFile>${sonar.jacoco.reportPath}</destFile>
<append>true</append>
</configuration>
<executions>
<execution>
<id>agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
</executions>
</plugin>
destFile將報告文件放置在Sonar會查找的位置,并將append其添加到文件中,而不是覆蓋它。這會將所有JaCoCo報告合并到同一文件中的所有子模塊。
Sonar將為每個子模塊查看該文件,因為這就是我們在上面指出的內容,因此我們可以為Sonar中的多模塊文件提供組合的單元測試結果。

TA貢獻1806條經驗 獲得超5個贊
自0.7.7版以來的新方法
從0.7.7版開始,有一種新方法可以創建匯總報告:
您創建一個單獨的“報告”項目,該項目將收集所有必要的報告(聚合器項目中的任何目標均在其模塊之前執行,因此無法使用)。
aggregator pom
|- parent pom
|- module a
|- module b
|- report module
該根POM看起來是這樣的(不要忘了在模塊添加新的報表模塊):
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.8</version>
<executions>
<execution>
<id>prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
每個子模塊的poms根本不需要更改。報表模塊中的pom 如下所示:
<!-- Add all sub modules as dependencies here -->
<dependencies>
<dependency>
<module a>
</dependency>
<dependency>
<module b>
</dependency>
...
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.8</version>
<executions>
<execution>
<id>report-aggregate</id>
<phase>verify</phase>
<goals>
<goal>report-aggregate</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
完整的示例可以在這里找到。
添加回答
舉報