我第一次使用cobertura。一切正常,但我想知道的是, 我的代码中有一些行,永远不应该被称为:
try {
em.persist();
}catch(Exception) {
logger.error("can not create");
}
我正在执行所有控制,直到持续行,当我的代码正常工作时,永远不会达到错误行,现在就是这样。因此我从来没有%100线覆盖。
我应该以某种方式抑制它?
谢谢Bilal
答案 0 :(得分:5)
虽然您可以从Cobertura覆盖率报告中排除整个类,但您不能排除特定的行或方法。
您应该接受在现实项目中无法实现100%的覆盖率,因为总会有无法访问的代码或代码,只能通过模拟复杂的条件组合来实现。
正如其他答案所示,您可以通过模拟/存根EntityManager
来尝试增加单元测试覆盖率,以便在persist
上抛出异常。但这几乎是你可以去的。
答案 1 :(得分:0)
编写一个单元测试,涵盖异常投掷案例。
答案 2 :(得分:0)
我不会说“持久”方法发生的异常不会发生。如果数据库连接参数错误,或者有人使用映射注释并且搞乱了列名,会发生什么?这都会引发异常。捕获和吞咽这可能会导致单元测试在异常失败时成功。