Вы пропустили самую важную альтернативу: не рассматривайте ее как желаемую цель для достижения 100% покрытия кода.
Проверка надежности в вашем коде, строго говоря, не поддается проверке разумным способом. Это будет происходить и в различных других частях вашего кода - это часто происходит в операторах switch, где все возможные случаи явно рассматриваются, и добавляется дополнительный случай по умолчанию, просто чтобы вызвать исключение или иным образом обработать эту «невозможную» ситуацию. Или подумайте об утверждениях утверждений, добавленных в код: поскольку утверждения никогда не должны завершаться ошибкой, строго говоря, вы никогда не сможете охватить ветку else
, которая скрыта внутри оператора утверждений - как проверить, что выражение внутри утверждения является хорошо на самом деле обнаружить проблему, которую вы хотите?
Удаление такого кода надежности и утверждений не является хорошей идеей, поскольку они также защищают вас от нежелательных побочных эффектов будущих изменений. Исключение кода из анализа покрытия может быть приемлемым для примеров, которые вы показали, но в большинстве случаев, о которых я упоминал, это не будет хорошим вариантом. В конце концов, вам нужно будет принять осознанное решение (просматривая подробный отчет о покрытии, а не только общий процент), какие утверждения / ответвления и т. Д. Вашего кода действительно необходимо охватить, а какие нет.
И, как последнее замечание, помните, что высокий охват кода не обязательно свидетельствует о высоком качестве вашего набора тестов. Ваш набор тестов имеет высокое качество, если он обнаружит ошибки в коде, которые могут существовать. У вас может быть набор тестов со 100% охватом, который не обнаружит потенциальных ошибок.