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