首页 文章

即使执行,Emma也没有录制线路覆盖范围

提问于
浏览
0

我使用艾玛来记录代码覆盖率 . 我对线路覆盖(或线路%)特别感兴趣我们计划通过'自动化来增加源代码的线路覆盖率 . 我们首先手动执行方案,然后使用emma进行检查,如果行%增加 . 如果有,我们继续并自动化该功能 . 我坚持使用特定的IF-ELSE块,当我手动运行场景时,我看到了所需的结果 . 但艾玛没有记录该线路 . 以下是示例代码

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;
             }

emma报告中前3行为绿色 . 但是,emma报告中的以下几行是红色的(意思是它们没有被覆盖)

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

但是当我手动执行场景时,我看到了所需的结果(即重定向到testpage.html页面)为什么艾玛没有记录这条线?

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

3.18 . EMMA开始报告它已经检测了0个类,即使我给它一些输入......你可能会因为EMMA仪器的增量特性而被绊倒 . 在调试启用EMMA的构建时,请尝试干净地重新编译和/或手动删除所有仪器输出目录和所有.em / .ec文件,以将EMMA重置为干净状态 .

1 回答

  • 1

    可能对未来提到这个的人有用......

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

    如果在检测时没有看到消息“没有调试模式编译的类” - 那么您应该在报告中看到行覆盖 .

相关问题