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