3

我试图从单元测试覆盖范围中排除某些方法。我正在使用 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 项目有这样的东西吗?谢谢。

4

3 回答 3

1

为了使@CoverageIgnore 工作,您必须在 pom 的 build 部分中将其用于检测配置。您可能在父 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 仅支持方法注释)。

于 2015-04-16T07:14:51.490 回答
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>,所以如果忽略注释在那里也不起作用,我也不会感到惊讶。

于 2015-01-07T13:25:31.307 回答
0

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

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

于 2015-01-14T09:34:53.547 回答