Cobertura报告覆盖率达到100%

3
我正在使用Jetty和我的仪器化类运行WebApp。在Jetty关闭后,我会获取生成的.set文件并使用命令行工具创建Cobertura报告。
我总是得到任何类的100%覆盖率结果。看起来Cobertura只考虑了测试期间执行的代码行,而没有获取完整的类数据。
我尝试添加源文件到报告中,但没有帮助。我还尝试将仪器化后创建的.ser文件与Jetty关闭后创建的.ser文件合并(实际上是同一个文件,但在运行Jetty之前,我备份了仪器化后创建的.ser文件),但这里也没有帮助。
请问有人能帮忙吗?
谢谢。
2个回答

2
正如在http://cobertura.sourceforge.net/faq.html中回答问题"当我生成覆盖率报告时,为什么它们总是显示100%的覆盖率?"所解释的那样, "Cobertura在生成报告时可能使用了错误的.ser文件。当您对类进行工具化时,Cobertura会生成一个包含每个类基本信息的.ser文件。随着测试运行,Cobertura会将附加信息添加到相同的数据文件中。如果运行时无法找到工具化的类的数据文件,则会创建新的文件。重要的是在工具化、运行和生成报告时使用相同的cobertura.ser文件。" 在我的情况下,当工具化的类位于一个.ser文件中,而在执行期间我却生成了另一个.ser文件时,就会出现这个问题。仅从第二个.ser生成HTML报告即可显示问题。合并两个数据文件(.ser)并重新生成报告即可解决问题。
有关“合并数据文件”的信息,请参见http://cobertura.sourceforge.net/commandlinereference.html

2

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

请确保:

  • 您提供了正确的文件夹
  • 源文件夹按包结构组织,而不是所有类都在一个目录中

谢谢 - 我已经更正了源文件夹路径(它是错误的),现在我可以在报告中看到源代码了!但是覆盖率仍然是100%(你可以看到实际上并不是这样)。 - Ben Bracha
2
好的 - 找到问题了! 因为我们手动执行了整个过程,似乎我们意外地对已经被仪器化的类进行了仪器化.. 我猜这让 Cobertura 感到困惑(源代码不再匹配),并生成了错误的报告.. 谢谢! - Ben Bracha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接