我正在使用Cobertura进行代码覆盖率分析。如果我在Jenkins中运行构建,则generated
中的类包含在coverage结果中,但覆盖率为 0%。如果我在我的工作区(Eclipse)中运行代码覆盖,则覆盖范围要高得多。包com.my.package
的覆盖范围是可以的。我错过了一些配置吗?
我的项目结构如下:
- com +- com.my +-- com.my.package +--- class1.java +--- class2.java - generated +- classX.java +- classY.java
我在POM文件中的cobertura配置:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.4</version>
<configuration>
<formats>
<format>xml</format>
</formats>
<check>
<branchRate>0</branchRate>
<lineRate>0</lineRate>
<haltOnFailure>false</haltOnFailure>
<totalBranchRate>0</totalBranchRate>
<totalLineRate>0</totalLineRate>
<packageLineRate>0</packageLineRate>
<packageBranchRate>0</packageBranchRate>
</check>
<instrumentation>
<excludes>
<exclude>**/*Test.class</exclude>
</excludes>
</instrumentation>
</configuration>
<executions>
<execution>
<phase>test</phase>
<goals>
<goal>cobertura</goal>
</goals>
</execution>
</executions>
</plugin>
答案 0 :(得分:1)
不应测试生成的代码,也不应在代码覆盖率指标中使用。原因是您不应该测试生成代码的库。
我自己从未使用过Cobertura,但似乎你应该添加这样的东西:
<instrumentation>
<excludes>
<exclude>**/*Test.class</exclude>
<exclude>generated/*.class</exclude>
</excludes>
</instrumentation>