【问题标题】:Maven Jacoco Configuration for multi-module projects [duplicate]多模块项目的 Maven Jacoco 配置 [重复]
【发布时间】:2017-01-30 18:17:26
【问题描述】:

我正在尝试使用 maven 中的 jacoco 插件为我正在处理的多模块项目生成代码覆盖率报告。

我在构建标签的父 pom.xml 中添加了以下内容。

      <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.7.8-SNAPSHOT</version>
            <configuration>
                <output>file</output>
                <append>true</append>
            </configuration>
            <executions>
                <execution>
                    <id>jacoco-initialize</id>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                </execution>
                <execution>
                    <id>jacoco-site</id>
                    <phase>verify</phase>
                    <goals>
                        <goal>report</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.18.1</version>
            <configuration>
                <argLine>${argLine}</argLine>
            </configuration>
        </plugin>

在运行 mvn verify 时,会为 "project-root\module\target\site\jacoco\"

中的每个模块生成相应的 jacoco 报告

是否可以在项目根目录生成一个合并的 jacoco 报告,其中包含每个模块的测试覆盖率详细信息?

请建议合并各个模块报告的最佳方法。

【问题讨论】:

    标签: maven jacoco test-coverage jacoco-maven-plugin


    【解决方案1】:

    没错!

    我花了一些时间和一些资源来制作这种模式,但效果很好。

    对于多模块 Maven 项目:

    ROOT
    |--LIB-1
    |--LIB-2
    

    LIB 项目都有自己的单元测试。

    ROOT pom.xml

    <!- properties-->
    <jacoco.reportPath>${project.basedir}/../target/jacoco.exec</jacoco.reportPath>
    
    <!-- build/plugins (not build/pluginManagement/plugins!) -->
    <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>0.7.6.201602180812</version>
        <executions>
            <execution>
                <id>agent-for-ut</id>
                <goals>
                    <goal>prepare-agent</goal>
                </goals>
                <configuration>
                    <append>true</append>
                    <destFile>${jacoco.reportPath}</destFile>
                </configuration>
            </execution>
        </executions>
    </plugin>
    

    LIB 项目pom.xml 将继承 JaCoCo 插件的执行,因此只需在 Surefire 插件中连接 argline。

    <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.18.1</version>
        <configuration>
            <argLine>${argLine}</argLine>
        </configuration>
     </plugin>
    

    我有一个扩展的答案,用于汇总集成测试以及通过 Sonar 报告的 JaCoCo 单元测试,您可以查看 my detailed answer here

    【讨论】:

    • 谢谢....我按照您详细回答中提到的步骤进行操作..终于成功了:)
    【解决方案2】:

    除了 markdsievers 详细回答中建议的步骤外,我还必须在 localhost:9000 中设置 sonarqube-5.3(支持 jdk 7+)

    Setup SonarQube

    并使用 mvn package 生成 jacoco.exec 文件。 然后 mvn sonar:sonar 在声纳仪表板中生成报告。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-21
      • 2012-09-03
      • 2012-02-15
      • 1970-01-01
      • 1970-01-01
      • 2016-04-28
      • 2011-09-03
      • 2014-10-03
      相关资源
      最近更新 更多