【问题标题】:Cobertura report has 100% coverage anywhereCobertura 报告在任何地方都有 100% 的覆盖率
【发布时间】:2011-11-08 14:07:11
【问题描述】:

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

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

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

有人可以帮忙吗?

谢谢

【问题讨论】:

    标签: jetty integration-testing cobertura


    【解决方案1】:

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

    确保:

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

    【讨论】:

    • 谢谢 - 我更正了源文件夹路径(错误),现在我可以在报告中看到源代码了!但是覆盖率仍然是 100%(你在源代码上看到它实际上不是)
    • 好吧 - 找到问题了!因为我们手动完成了所有过程,所以我们似乎不小心检测了已经检测的类。我猜这让 Cobertura 感到困惑(源代码不再匹配)并生成错误报告。谢谢!
    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-15
      • 2017-01-03
      • 2010-11-14
      • 1970-01-01
      • 2011-06-15
      • 1970-01-01
      • 2016-07-12
      • 2021-07-29
      相关资源
      最近更新 更多