Cobertura覆盖范围忽略了maven项目中的注释?

时间:2014-05-29 19:07:44

标签: java maven code-coverage cobertura maven-cobertura-plugin

我试图从单元测试覆盖范围中排除某些方法。我正在使用Cobertura,因为我发现自2.0版以来,他们引入了覆盖忽略注释来排除方法和类:https://github.com/cobertura/cobertura/wiki/Coverage-Annotations

我按原样设置了我的项目,创建了一个名为" CoverageIgnore"因为它在文章中并注释了一些方法。我正在使用Cobertura 2.0.3,在生成报告时,注释似乎不起作用:(

我还发现了这篇文章 - https://github.com/cobertura/cobertura/wiki/Ant-Task-Reference#ignore-method-annotation,其中讨论了cobertura中仪器任务的一些配置,但它似乎符合Ant标准:

<cobertura-instrument>
  <ignoreMethodAnnotation annotationName="foo.bar.CoverageIgnore"/>
</cobertura-instrument>

我的maven项目有这样的东西吗? 感谢。

3 个答案:

答案 0 :(得分:1)

试试这个:

<build>
    ...
    <plugins>
        ...
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>cobertura-maven-plugin</artifactId>
            <version>2.6</version>
            <configuration>
                ...
                <instrumentation>
                    <ignoreMethodAnnotations>
                        <ignoreMethodAnnotation>foo.bar.CoverageIgnore</ignoreMethodAnnotation>
                    </ignoreMethodAnnotations>
                </instrumentation>
                ...
            </configuration>
            ...
        </plugin>
        ...
    </plugins>
    ...
</build>

请注意,这是在<build>元素中。我没有在<reporting>元素中尝试过,但我知道<ignore><exclude>仅适用于<build>,所以如果忽略它就不会让我感到惊讶注释也不在那里工作。

答案 1 :(得分:1)

为了让@CoverageIgnore工作,您必须将它用于pom的构建部分中的检测配置。您可能有完整的父pom报告规范(如果是多模块)并且在您的孩子pom中只有这样的内容:

<build>
    <plugins>
        ...
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>cobertura-maven-plugin</artifactId>
            <configuration>
              <instrumentation>
                <ignoreMethodAnnotations>
                    <ignoreMethodAnnotation>where.it.is.CoverageIgnore</ignoreMethodAnnotation>
                </ignoreMethodAnnotations>
              </instrumentation>
            </configuration>
        </plugin>
    </plugins>
</build>

通过这种方式,插件将在构建部分中执行,并正确检测带注释的类(提醒:cobertura仅支持方法注释)。

答案 2 :(得分:0)

目前我发现有一个需要应用的maven-plugin补丁。希望将在2.7中修复?!

https://jira.codehaus.org/browse/MCOBERTURA-176