Java 科伯图拉,你永远不应该来
我第一次使用cobertura。一切正常,但我想知道的是, 我的代码中有几行代码,不应该这样调用:Java 科伯图拉,你永远不应该来,java,code-coverage,cobertura,Java,Code Coverage,Cobertura,我第一次使用cobertura。一切正常,但我想知道的是, 我的代码中有几行代码,不应该这样调用: try { em.persist(); }catch(Exception) { logger.error("can not create"); } 我一直在做所有的控件,直到持久化行,当我的代码工作正常时,错误行永远不会到达,现在就是这样。因为它,我从来没有100%的线路覆盖率 我应该怎么抑制它吗 谢谢,Bilal编写了一个单元测试,涵盖异常抛出案例。虽然您可以从Cobertur
try {
em.persist();
}catch(Exception) {
logger.error("can not create");
}
我一直在做所有的控件,直到持久化行,当我的代码工作正常时,错误行永远不会到达,现在就是这样。因为它,我从来没有100%的线路覆盖率
我应该怎么抑制它吗
谢谢,Bilal编写了一个单元测试,涵盖异常抛出案例。虽然您可以从Cobertura覆盖报告中排除整个类,但不能排除特定的行或方法 您应该接受,在现实项目中不可能实现100%的覆盖率,因为总会有无法访问的代码或只有通过模拟复杂的条件组合才能访问的代码
正如其他答案所建议的,您可以通过模拟/存根
EntityManager
来尝试增加单元测试覆盖率,从而在persist
上抛出异常。但这几乎是您所能做到的。我不会说“persist”方法发生的异常不会发生。如果db连接参数错误,或者有人弄乱了映射注释并弄乱了列名,会发生什么?这一切都会引发一个例外。捕获并吞咽该异常会导致单元测试在异常失败时成功。这是不可能的,因为我正在dao中执行所有控制。当代码到达此代码之前,一切都会正常工作。