【问题标题】:Cobertura coverage ignore annotation in maven project?Cobertura 覆盖忽略 Maven 项目中的注释?
【发布时间】:2014-07-19 09:58:51
【问题描述】:

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

我按原样设置了我的项目,创建了一个名为“CoverageIgnore”的@interface,就像在文章中一样,并注释了一些方法。我正在使用 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 项目有类似的东西吗? 谢谢。

【问题讨论】:

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


    【解决方案1】:

    为了使@CoverageIgnore 工作,您必须在 pom.xml 的构建部分中将其用于检测配置。您可能在父 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】:

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

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

      【讨论】:

        【解决方案3】:

        试试这个:

        <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>
        

        请注意,这是在 &lt;build&gt; 元素中。我没有在&lt;reporting&gt; 元素中尝试过,但我知道&lt;ignore&gt;&lt;exclude&gt; 只在&lt;build&gt; 中有效,所以如果忽略注释在那里也不起作用,我也不会感到惊讶。

        【讨论】:

          猜你喜欢
          • 2011-11-13
          • 1970-01-01
          • 2011-08-15
          • 2011-12-26
          • 1970-01-01
          • 2012-05-03
          • 1970-01-01
          • 1970-01-01
          • 2016-05-22
          相关资源
          最近更新 更多