Кобертура, линии подавления никогда не должны прийти - PullRequest
2 голосов
/ 14 мая 2011

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

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

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

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

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

Ответы [ 3 ]

5 голосов
/ 15 мая 2011

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

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

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

0 голосов
/ 29 июня 2012

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

0 голосов
/ 15 мая 2011

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

...