排除Cobertura代码覆盖的方法
有没有办法将代码从列入Cobertura覆盖率报告中排除? 我们有一些方法不应该包含在覆盖报告中,因此不会降低覆盖率。
我知道三叶草有这样的function,但是我没有发现类似于Cobertura的东西。
您可以从检测中排除类。 那么他们不应该出现在报告。 请参阅下面的排除语句
您也可以忽略对某些方法的调用。 请参阅下面的ignore语句。
如果您使用的是maven,请参阅maven插件手册 。
<configuration> <instrumentation> <ignores> <ignore>com.example.boringcode.*</ignore> </ignores> <excludes> <exclude>com/example/dullcode/**/*.class</exclude> <exclude>com/example/**/*Test.class</exclude> </excludes> </instrumentation> </configuration>
而ant看到这一点 。
<cobertura-instrument todir="${instrumented.dir}"> <ignore regex="org.apache.log4j.*" /> <fileset dir="${classes.dir}"> <include name="**/*.class" /> <exclude name="**/*Test.class" /> </fileset> <fileset dir="${jars.dir}"> <include name="my-simple-plugin.jar" /> </fileset> </cobertura-instrument>
这一段时间以来,我一直在打破我的头脑。
我的问题是,我有报告部分而不是构build部分cobertura maven插件安装。
如果你没有在build部分设置,那么这个工具设置,因此不包括类或者包,所以不要使用,所以要小心这个。
记得也要排除内部类。
<exclude>path/to/class/MyClass*.class</exclude>
我花了好几年才注意到我错过了一个星号!
Cobertura目前没有提供这样的function,虽然它被列为即将到来的增强,但Emma(我们使用)也没有,尽pipe我认为它是对排除规则的扩展,而不是作为注释。
可以很方便地干净地覆盖那些不能进入的angular落,这样你就可以百分百争取而不会变得荒谬。
我认为注释可能是一个更友好的方式来做到这一点,但他们应该是相当明确的命名和基于一个可接受的场景列表,因为我担心,否则类似“@ExcludeFromCoverage”将被慷慨地添加。