Cobertura, подавить линии никогда не должны прийти


Я использую cobertura в первый раз. Все работает отлично, но что мне интересно, так это, в моем коде есть строки, которые никогда не должны называться так:

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

Я делаю все элементы управления, пока не сохранится строка, когда мой код работает нормально, строка ошибки никогда не будет достигнута, и теперь это так. Из-за этого у меня никогда не было покрытия линии %100.

Должен ли я как-то подавить его?

Спасибо, Билал

3 2

3 ответа:

Хотя вы можете исключить целые классы из отчетов cobertura coverage, вы не можете исключить определенные строки или методы.

Вы должны согласиться с тем, что 100% покрытие невозможно достичь в реальных проектах, так как всегда будет недостижимый код или код, который может быть достигнут только путем моделирования сложной комбинации условий.

Как показывают другие ответы, вы можете попытаться увеличить охват модульного теста, издеваясь/заглушая EntityManager, чтобы создать исключение для persist. Но это почти все, что вы можете сделать.

Напишите модульный тест, который охватывает случай исключения.

Я бы не сказал, что исключение, возникающее из метода "persist", не может произойти. Что произойдет, если параметры подключения к БД неверны или кто-то испортил аннотации отображения и перепутал имя столбца? Это все вызовет исключение. Ловить и проглатывать это может привести к тому, что ваш модульный тест будет успешным, когда он должен потерпеть неудачу в исключении.