【问题标题】:Emma not recording line coverage even though it executed艾玛没有记录线路覆盖率,即使它执行了
【发布时间】:2013-02-26 17:27:58
【问题描述】:

我正在使用 emma 来记录代码覆盖率。我对线路覆盖率(或线路百分比)特别感兴趣 我们计划通过自动化来增加源代码的线路覆盖率。我们首先手动执行场景,然后使用 emma 检查 line% 是否增加。如果有,我们继续并自动化该功能。我被一个特定的 IF-ELSE 块卡住了,当我手动运行场景时,我看到了想要的结果。但是 emma 并没有将这条线记录为所涵盖的内容。下面是示例代码

    if (a == null) 
             {
                 final class1 c1 = new class1();
                 if (c1.isSE()) 
                 {
                    c1.sendRedirect(req, res, "error.html");
                 } 
                 else 
                 {
                     c1.sendRedirect(req, res, "testpage.html");
                 }
                 return;
             }

艾玛报告中的前 3 行是绿色的。但是,以下几行在 emma 报告中是红色的(表示它们没有被覆盖)

c1.sendRedirect(req, res, "error.html");
c1.sendRedirect(req, res, "testpage.html");
return;

但是当我手动执行场景时,我看到了想要的结果(即被重定向到 testpage.html 页面)为什么 emma 没有记录这一行?

注意:我已尝试以下故障排除(http://emma.sourceforge.net/faq.html 中提到)

3.18。 EMMA 开始报告它检测了 0 个类,尽管我给了它一些输入...

您可能会被 EMMA 检测的增量性质绊倒。在调试启用 EMMA 的构建时,请尝试 清理重新编译和/或删除所有检测输出目录 和所有 .em/.ec 文件手动将 EMMA 重置为干净状态。

【问题讨论】:

  • 您是如何生成报告的?你使用什么构建工具?

标签: emma


【解决方案1】:

可能对将来参考此内容的人有用...

当您对 Jars 进行检测时,您可以看到 emma 列出了一些带有“Class Compiled without Debug Mode”的类。如果您在检测时看到这些消息,则不会生成 Line % Coverage。为了克服这个问题,您要么需要在调试模式下编译这些类,要么考虑排除那些不需要的类。通常带有上述消息的类将是第三方类。

如果您在检测时没有看到“Class Compiled without Debug Mode”消息 - 那么您应该在报告中看到 Line coverage。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    相关资源
    最近更新 更多