Так есть ли единственный способ макетировать объекты так, чтобы исключение могло быть выдано?
Я полагаю, что это будет самый простой способ, но вы могли бы также сделать заглушку (иначе говоря, объект, который расширяет реальный объект и заставляет поведение подобно выбрасыванию исключения каждый раз). Или вы можете использовать AOP, но я думаю, что использование библиотеки типа easymock или jmock будет самым простым способом.
Это кажется немного бессмысленным. Возможно, лучше просто принять не получая 100% покрытия кода?
Всякий раз, когда я говорю на эту тему, мне нравится отвлекать людей от беспокойства по поводу определенного процента охвата, и вместо этого использовать процент как инструмент, чтобы сделать вас лучшим разработчиком. Иными словами, покрытие 100% или покрытие 50% не обязательно означает, что ваш код хорошо написан или даже работает, но использование охвата кода в качестве ключевого индикатора при разработке кода, если вы не даете писать тесты и т. Д ... хорошая идея.
Мое личное мнение по поводу вашего вопроса: если ваша логика работает по логике, то ее стоит протестировать. Так что, если вы перехватываете и исключение и повторно настраиваете false из метода, у вас должен быть тест для этого. Если вы перехватываете исключение и заключаете его в другое исключение, вы должны это проверить. Если вы улавливаете исключение и ничего не делаете, то это должен быть запах кода, который необходимо исправить, поскольку это может привести к всевозможным неуправляемым побочным эффектам.
Что касается того, не гневается ли это на 100%, я бы сказал, что да, оно того не стоит. Вы должны найти хороший уровень комфорта для себя (может быть, 80%, может быть, 90%) и придерживаться его. Но я бы не стал основывать его на типах тестов (например, тестирование логики исключений), он должен основываться только на общем покрытии и рассматриваться как показатель того, что вы не пишете свои тесты при фиксации кода.