Целью является не 100% покрытие кода и не 80% покрытие кода. Простота написания модульного теста не означает, что вы должны его написать, а сложность написания модульных тестов не означает, что вам следует избегать усилий.
Целью любого теста является обнаружение видимых для пользователя проблем наиболее благоприятным способом.
Оправдывает ли общая стоимость разработки, сопровождения и диагностики проблем, отмеченных тестом (включая ложные срабатывания), проблемы, которые улавливает конкретный тест?
Если проблема, с которой сталкивается тест, является «дорогой», тогда вы можете позволить себе попытаться выяснить, как ее протестировать, и поддерживать этот тест. Если проблема, с которой сталкивается тест, тривиальна, то написание (и поддержание!) Теста (даже при наличии изменений кода) лучше сделать тривиальным.
Основная цель модульного теста - защитить разработчиков от ошибок реализации. Одно это должно указывать на то, что слишком большие усилия будут пустой тратой. После определенного момента появляются лучшие стратегии для правильной реализации. Кроме того, после определенного момента видимые проблемы возникают из-за правильной реализации неправильной вещи, которая может быть обнаружена только пользовательским уровнем или интеграционным тестированием.