Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 完全覆盖代码的EclEmma覆盖率是否可以低于100%?_Java_Eclipse_Code Coverage_Emma_Eclemma - Fatal编程技术网

Java 完全覆盖代码的EclEmma覆盖率是否可以低于100%?

Java 完全覆盖代码的EclEmma覆盖率是否可以低于100%?,java,eclipse,code-coverage,emma,eclemma,Java,Eclipse,Code Coverage,Emma,Eclemma,我只是编写了一些简单的示例代码,以确保正确安装了EclEmma。我没有得到100%的保险,我不明白为什么。突出显示意味着它与类名有关。以下是我的代码,以及相应的JUnit测试,就像EclEmma突出显示的那样: 覆盖率结果显示,算术中的三条指令没有被命中,尽管两种实际方法似乎都被完全覆盖: 我已经读过了,但我还是很困惑。我不确定错过了哪些基本模块。起初,我认为EclEmma可能只是忽略了类的字节码,但是arithmetrictest似乎处理得很好 我有两个密切相关的问题: 这是否表明我安装

我只是编写了一些简单的示例代码,以确保正确安装了EclEmma。我没有得到100%的保险,我不明白为什么。突出显示意味着它与类名有关。以下是我的代码,以及相应的JUnit测试,就像EclEmma突出显示的那样:

覆盖率结果显示,
算术
中的三条指令没有被命中,尽管两种实际方法似乎都被完全覆盖:

我已经读过了,但我还是很困惑。我不确定错过了哪些基本模块。起初,我认为EclEmma可能只是忽略了类的字节码,但是
arithmetrictest
似乎处理得很好

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

  • 这是否表明我安装/配置EclEmma的方式存在问题
  • 完全覆盖的代码具有高但不完全100%的EMMA覆盖率评级是否正常/可接受,如果是,这是如何工作的

  • IIRC,你需要实例化一个类的实例来使用提供的构造函数。

    我认为你也需要测试
    算术的实例化,或者声明它的构造函数
    private
    来禁止实例化你的代码暗示了一个默认构造函数,Emma无法正确标记它,因为它没有文本块

    因为它没有在文本块中正确标记,Emma无法将覆盖率日志与文本文件关联,并且看起来有些代码没有被覆盖;因为,您运行了一些字节码,但无法注册行日志记录。稍后,当reporting元素读取行日志记录时,他们找不到默认构造函数的行号,它会在唯一有意义的地方——类声明行突出显示错误

    默认构造函数如下所示

    public Arithmetic() {
      super();
    }
    

    其中super是隐含的第一条指令,它将构造
    对象
    。虽然您可以忽略它的存在,但编译器将为您添加它。这就是你得到“3行”而不是一行的地方。

    啊,测试构造函数就可以做到这一点。EclEmma对于使用私有构造函数并不感到高兴,但我记得我在某个地方看到了一个解决方法。实际上,它确实有一个“文本块”,它只是空的。在字节码中,默认构造函数位于ECLEMA标记为红色的行中。要覆盖它并使其显示为绿色,测试只需调用构造函数:
    new alumption()
    。当然,这里正确的做法是在类中声明一个
    private
    默认构造函数。