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