分支机构在测试JUnit和EclEmma时错过了

时间:2012-03-15 18:13:56

标签: java unit-testing junit code-coverage

我正在使用EclEmma测试我编写的测试类的覆盖范围(JUnit测试)。我使用-ea在Java中启用了断言。在运行覆盖测试之后,我使用了Java断言(在实际代码中,当然不是测试代码),它表示x的{​​{1}}个分支错过了。我怎样才能涵盖所有分支?有什么我做错了吗?

1 个答案:

答案 0 :(得分:2)

我认为你问为什么你在禁用断言时获得较低的覆盖率? 发生这种情况是因为编译器为断言插入了新的分支。考虑这个例子:

assert x > 0;

编译器将插入与

大致相对应的代码
if (assertions are enabled) {
    if ( ! x > 0 )
        throw new AssertionViolatedException()
    }
}

这会为您的代码添加分支,当您转换断言时,这些分支都不会被执行。这会降低你的覆盖率,但这并不重要,因为这是指编译器生成的代码。