Cobertura报告在任何地方都有100%覆盖率

时间:2011-11-08 14:07:12

标签: jetty integration-testing cobertura

我正在使用Jetty运行我的webApp和我的检测类。 关闭Jetty后,我正在使用生成的.set文件并使用命令行工具创建一个cobertura报告。

我总是在任何课程上获得100%的报道结果。 Cobertura似乎只考虑了测试期间执行的行,并且没有获得完整的类数据。

我尝试将源文件添加到报告中 - 没有帮助。 我还试图获取在检测之后创建的.ser文件并将其与Jetty关闭后创建的.ser文件合并(它实际上是同一个文件,但在运行Jetty之前我备份了在检测之后创建的.ser文件) - 这里也没有帮助。

有人可以帮忙吗?

由于

2 个答案:

答案 0 :(得分:2)

100%的覆盖率是一个明确的指标,报告缺少来源。您应该检查配置以创建报告。

确保:

  • 您提供了正确的文件夹
  • 源文件夹的结构类似于包,而不仅仅是一个目录中的所有类

答案 1 :(得分:2)

正如http://cobertura.sourceforge.net/faq.html所解释的那样,在回答问题“当我生成报道报告时,为什么它们总是在各处显示100%的报道?”,

“Cobertura在生成报告时可能使用了错误的.ser文件。当您修改课程时,Cobertura会生成一个.ser文件,其中包含有关每个课程的基本信息。当您的测试运行时,Cobertura会添加其他信息。这个相同的数据文件。如果检测的类在运行时找不到数据文件,那么它们将创建一个新文件。在检测,运行和生成报告时使用相同的cobertura.ser文件非常重要。“

在我的情况下,当检测类在一个.ser中时我遇到了这个问题,并且在执行期间我生成了另一个.ser。从第二个.ser生成HTML报告“just”显示了问题中提到的问题。合并两个数据文件(.ser)并重新生成报告,解决了这个问题。

有关“合并数据文件”的信息,请参阅http://cobertura.sourceforge.net/commandlinereference.html