我正在使用EclEmma测试我编写的测试类的覆盖范围(JUnit测试)。我使用-ea
在Java中启用了断言。在运行覆盖测试之后,我使用了Java断言(在实际代码中,当然不是测试代码),它表示x
的{{1}}个分支错过了。我怎样才能涵盖所有分支?有什么我做错了吗?
答案 0 :(得分:2)
我认为你问为什么你在禁用断言时获得较低的覆盖率? 发生这种情况是因为编译器为断言插入了新的分支。考虑这个例子:
assert x > 0;
编译器将插入与
大致相对应的代码if (assertions are enabled) {
if ( ! x > 0 )
throw new AssertionViolatedException()
}
}
这会为您的代码添加分支,当您转换断言时,这些分支都不会被执行。这会降低你的覆盖率,但这并不重要,因为这是指编译器生成的代码。