我只是编写了一些简单的示例代码来确保我正确安装了 EclEmma。我没有获得 100% 的覆盖率,我不明白为什么。突出显示意味着它与类名有关。这是我的代码,以及相应的 JUnit 测试,EclEmma 突出显示了它:
覆盖率结果显示,三个指令Arithmetic
没有受到打击,尽管两种实际方法似乎都被完全覆盖:
我读了有关基本块覆盖的 EclEmma 文档,但我还是很困惑。我不确定错过了哪些基本块。起初,我认为 EclEmma 可能只是忽略了类的字节码,但是ArithmeticTest
看来处理得刚刚好。
我有两个密切相关的问题:
- 这是否表明我安装/配置 EclEmma 的方式有问题?
- 完全覆盖的代码具有高但不完全 100% 的 EMMA 覆盖率评级是否正常/可接受?如果是,那么它是如何工作的?
您的代码暗示了一个默认构造函数,Emma 无法正确标记它,因为它没有文本块。
由于它没有在文本块中正确标记,Emma 无法将覆盖日志记录与文本文件关联起来,并且看起来有些代码没有被覆盖;因为,您运行了一些字节码,但无法注册行日志记录。稍后,当报告元素读取行日志记录时,他们找不到默认构造函数的行号,并且它会在唯一有意义的地方(类声明行)突出显示错误。
默认构造函数看起来像
public Arithmetic() {
super();
}
其中 super 是隐含的第一条指令,它将构造Object
。虽然您可以省略它的存在,但编译器会为您添加它。这就是你得到“3 行”而不是一行的地方。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)