我第一次使用cobertura。一切工作正常,但我奇怪的是, 有在我的代码,线,不应该这样调用:Cobertura,压制线永远不会来
try {
em.persist();
}catch(Exception) {
logger.error("can not create");
}
我做的所有控件,直到坚持行,当我的代码工作正常,误差线永远到达现在它是如此。正因为如此,我从来没有%100线覆盖。
我应该以某种方式压制它吗?
谢谢,比拉尔
我第一次使用cobertura。一切工作正常,但我奇怪的是, 有在我的代码,线,不应该这样调用:Cobertura,压制线永远不会来
try {
em.persist();
}catch(Exception) {
logger.error("can not create");
}
我做的所有控件,直到坚持行,当我的代码工作正常,误差线永远到达现在它是如此。正因为如此,我从来没有%100线覆盖。
我应该以某种方式压制它吗?
谢谢,比拉尔
虽然您可以从Cobertura覆盖率报告中排除整个类别,但您不能排除特定的行或方法。
您应该接受在实际项目中无法实现100%的覆盖率,因为始终存在无法访问的代码或代码,只能通过模拟复杂的条件组合才能实现。
正如其他答案建议,您可以尝试通过嘲弄/剔除EntityManager
以在persist
上抛出异常来增加单元测试覆盖率。但是,这几乎可以做到。
我不会说从“持续”方法发生的异常不会发生。如果数据库连接参数错误,或者有人使用映射注释并弄乱了列名称,会发生什么?这都会引发异常。捕捉并吞下它可能会导致您的单元测试在异常失败时成功。
感谢您的回复。 – bilal 2011-05-15 19:44:45