可以完全覆盖的代码小于100%的覆盖率EclEmma评价?(Can fully covered co

2019-06-25 09:17发布

我只是写了一些简单的示例代码,以确保我有正确安装EclEmma。 我没有得到100%的覆盖率,而且我不明白为什么。 高亮意味着它与类名的人。 这里是我的代码,相应的JUnit测试,EclEmma突出的方式:

覆盖率结果表明,在三个指令Arithmetic都不会击中,即使两个实际的方法似乎被完全覆盖:

我读过有关基本块覆盖的EclEmma文档 ,但我仍然感到困惑。 我不知道被哪个遗漏基本块。 起初,我还以为EclEmma可能只是忽略了类字节码,但ArithmeticTest似乎处理得很好。

我有两个密切相关的问题:

  1. 这是否表明与我安装的方式/配置EclEmma一个问题吗?
  2. 这是正常/为完全覆盖的代码可以接受的一个高但并非相当,100%覆盖EMMA等级,如果是这样,这是如何工作的?

Answer 1:

您的代码意味着一个默认的构造函数,这是不能被艾玛被正确标记,因为它不具有文本块。

由于没有正确的文本块中的标记,艾玛无法覆盖与文本文件记录相关联,它看起来像一些代码不被覆盖; 因为,你跑了一些字节码,但线记录无法注册。 后来,当报告要素读取的行记录,他们无法找到默认的构造函数的行号,并突出了几分是有道理的,类报关行的唯一地方的错误。

默认的构造看起来像

public Arithmetic() {
  super();
}

凡超是将构建隐含的第一个指令Object 。 虽然你可能会忽略它的存在,编译器将添加它。 这就是你获取“三线”,而不是一个。



Answer 2:

我认为你要么需要测试的实例化Arithmetic ,以及,或宣布其构造private不允许实例



Answer 3:

IIRC,你需要实例化类的实例,以锻炼语言提供的构造。



文章来源: Can fully covered code have an EclEmma coverage rating of less than 100%?