0

我正在尝试使用 cobertura 为我们的多模块 maven 项目生成代码覆盖率报告。在我运行 mvn clean 然后运行 ​​mvn package 之后。然后,在我们运行 JUnit 测试的模块之一中,为该模块生成的覆盖率报告与预期的一样正确。但覆盖范围仅适用于少数包裹。并非所有包都包括在内。请记住,它是一个多模块项目,具有一个父 POM,每个子模块都有自己的 POM。我是否还应该在每个子 POM 中包含 cobertura maven 插件详细信息?

但是,在其他 /target/site/cobertura 目录中生成的单个模块特定覆盖率报告对于线路覆盖率和分支覆盖率都报告为零。

我是否在我的父 POM 中遗漏了什么?我没有对目录中的任何子 POM 进行任何更改。请让我知道如何使用 cobertura 为多模块 maven 项目生成代码覆盖率报告。

这是我的父 POM 的样子。

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>cobertura-maven-plugin</artifactId>
    <version>2.5.1</version>
    <configuration>
        <formats>
            <format>html</format>
            <format>xml</format>
        </formats>
    </configuration>
    <inherited>true</inherited>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>cobertura</goal>
            </goals>
       </execution>
   </executions>
</plugin>

...

<dependencies>
    <dependency>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>cobertura-maven-plugin</artifactId>
        <version>2.5.1</version>
        <type>plugin</type>
        <scope>package</scope>
    </dependency>
</dependencies>

谢谢!

4

1 回答 1

2

根据文档,作为构建的一部分运行的插件和作为报告的一部分运行的插件之间存在区别: http ://maven.apache.org/guides/mini/guide-configuring-plugins.html

您使用“执行”表明您在“构建”下拥有插件,而显然它属于“报告”下 - 根据 cobertura 使用页面:http: //mojo.codehaus.org/cobertura-maven-plugin/usage.html

尝试从“build”中完全删除 cobertura 插件,而是将其放在“reporting”下:

<project>
    <!-- project stuff-->
    <build>
        <!-- build stuff -->
    </build>
    <reporting>
        <plugins>
            <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>cobertura-maven-plugin</artifactId>
            <version>2.2</version>
                <configuration>
                    <formats>
                        <format>html</format>
                    </formats>
                </configuration>
            </plugin>
        </plugins>
    </reporting>
</project>

然后运行它

mvn cobertura:cobertura

或与

mvn site
于 2013-07-02T10:31:27.123 回答