Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.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(Jacocco)显示未覆盖的行,即使该行已执行_Java_Unit Testing_Junit_Mockito_Jacoco - Fatal编程技术网

Java EclEmma(Jacocco)显示未覆盖的行,即使该行已执行

Java EclEmma(Jacocco)显示未覆盖的行,即使该行已执行,java,unit-testing,junit,mockito,jacoco,Java,Unit Testing,Junit,Mockito,Jacoco,我正在努力提高代码的行覆盖率。在我调用一个方法的地方执行一行,该方法反过来会抛出一个异常。但行覆盖显示红色,表示该行未执行 代码: 在我的测试类中,我正在准备一些服务所需的数据,并从上面的代码中调用myMethod。第2行显示红色,即使该行按预期执行并引发异常。请建议我如何显示覆盖的行以增加行覆盖率。我无法从您的示例中看出,但我之前已经把测试搞砸了,因为我对异常的描述不够具体。可能正在抛出异常,但不是您期望的异常?对我来说,在单元测试中,抛出NullPointerException非常容易。可能

我正在努力提高代码的行覆盖率。在我调用一个方法的地方执行一行,该方法反过来会抛出一个异常。但行覆盖显示红色,表示该行未执行

代码:


在我的测试类中,我正在准备一些服务所需的数据,并从上面的代码中调用myMethod。第2行显示红色,即使该行按预期执行并引发异常。请建议我如何显示覆盖的行以增加行覆盖率。

我无法从您的示例中看出,但我之前已经把测试搞砸了,因为我对异常的描述不够具体。可能正在抛出异常,但不是您期望的异常?对我来说,在单元测试中,抛出NullPointerException非常容易。可能是抛出了它,这导致您的测试通过,但代码覆盖率没有显示为已覆盖?

在发布问题之前,因为这是JaCoCo在和中描述的限制:

有异常的源代码行不显示覆盖范围。为什么? JaCoCo使用所谓的探测来确定代码的执行。探头插入控制流的特定位置。执行后续探测时,代码被视为已执行。在例外情况下,这样的指令序列在中间某个地方中止,并且相应的源代码行没有被标记为覆盖。


换句话说:若方法调用总是像您的示例中那个样抛出异常,那个么这个方法调用的行将永远不会被标记为完全覆盖的绿色。查看包含方法调用的行的唯一方法是在该方法调用未引发异常时执行/测试。

感谢您的响应。但是我在junit测试中有一个“expected=CustomRuntimeException.class”,测试用例通过了它,这意味着异常是由我期望的异常引发的,所以从我的代码中我只能看到第2行没有被覆盖。其他一切都按预期进行。
1 public void myMethod(SomeService someService){
2   throwException(someService);
3 }

4 public void throwException(SomeService someService){
5   THROW an exception here
6 }