0

我正在使用 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 重置为干净状态。

4

1 回答 1

1

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

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

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

于 2014-01-23T01:45:26.043 回答