EclEmma无法计算抛出异常的方法

时间:2015-10-21 17:08:09

标签: java code-coverage eclemma

我没有达到所涵盖的100%代码并且愿意。除非我看到100%绿色,否则我想知道我忘记测试并去寻找只是为了找出基于该工具的愚蠢的东西而不是我的测试让我远离它。然后我忘了,不得不冲洗/重复。

虽然testThrow中涵盖了所有路径,但由于异常,它不计算为运行。

有没有办法重新编写它,因此它被视为难以捉摸的100%绿色。

public class Dummy {
    public void testThrow() throws Exception {
        throwException();       // This line is red and is seen as not covered.
    }

    private void throwException() throws Exception {
        throw new Exception();
    }
}

public class DummyTest() {
    @Test
    public void testThrow() throws Exception {
        new Dummy().testThrow();
    }
}

我添加了@Test(expected = Exception.class),但该行仍为红色。

我也尝试过:

public void testThrow() throws Exception {
    try {
        throwException();       // This line is STILL red
    }
    catch(Exception e) {
        throw e;                // This line becomes green (as expected)
    }
}                               // This line is now also red

1 个答案:

答案 0 :(得分:1)

您可以在EclEmma documentation中找到相同的内容:

  

为什么JUnit4测试用例的预期异常显示为未涵盖?

     

具有预期异常的JUnit4测试用例显示为未涵盖   即使他们被处决了其原因在于潜在的   JaCoCo代码覆盖库仅将代码视为执行时的代码   执行某些探测。对于标有的成功测试用例   @Test {expected = ...}情况并非如此。