2011-05-14 45 views
2

我第一次使用cobertura。一切工作正常,但我奇怪的是, 有在我的代码,线,不应该这样调用:Cobertura,压制线永远不会来

try { 
    em.persist(); 
}catch(Exception) { 
    logger.error("can not create"); 
} 

我做的所有控件,直到坚持行,当我的代码工作正常,误差线永远到达现在它是如此。正因为如此,我从来没有%100线覆盖。

我应该以某种方式压制它吗?

谢谢,比拉尔

回答

5

虽然您可以从Cobertura覆盖率报告中排除整个类别,但您不能排除特定的行或方法。

您应该接受在实际项目中无法实现100%的覆盖率,因为始终存在无法访问的代码或代码,只能通过模拟复杂的条件组合才能实现。

正如其他答案建议,您可以尝试通过嘲弄/剔除EntityManager以在persist上抛出异常来增加单元测试覆盖率。但是,这几乎可以做到。

+0

感谢您的回复。 – bilal 2011-05-15 19:44:45

0

写一个单元测试覆盖异常抛出情况。

+0

这是不可能的,因为我在做我的所有控制。当代码达到此代码时,将会正常工作。 – bilal 2011-05-15 19:48:52

0

我不会说从“持续”方法发生的异常不会发生。如果数据库连接参数错误,或者有人使用映射注释并弄乱了列名称,会发生什么?这都会引发异常。捕捉并吞下它可能会导致您的单元测试在异常失败时成功。