У меня простой вопрос.
Допустим, у меня есть решение .Net, с различными проектами, такими как некоторые библиотеки классов (bll, dal и т. Д.) И основным проектом, который может быть веб-приложением или wpf-приложением, это не имеет значения.
Теперь предположим, что я хочу использовать контейнер IoC (например, Windsor, Ninject, Unity и т. Д.) Для разрешения таких вещей, как валидаторы, репозитории, реализации общего интерфейса и тому подобное.
Я собрал все это вместе. Компилируется и работает нормально. Затем, однажды, я добавляю новый сервис, и в своем коде я просто пытаюсь разрешить его через контейнер IoC. Дело в том, что я забыл зарегистрировать его в конфигурации IoC.
Все компилируется, приложение развертывается и запускается. Все работает нормально, за исключением случаев, когда код страницы запрашивает этот новый сервис для контейнера, а контейнер отвечает: «Эй, я ничего не знаю об этом сервисе».
Вы получите сообщение об ошибке и удобную страницу ошибок. Вы проверите ошибку, увидите проблему и исправите ее. Довольно стандартный.
Теперь давайте предположим, что мы хотим улучшить процесс и каким-то образом иметь возможность узнать во время компиляции, правильно ли каждая служба, которую мы ожидаем обработать контейнером IoC, зарегистрирована в коде.
Как этого можно достичь? Во-первых, юнит-тесты исключены из возможных ответов, я ищу другой способ, если он существует.
Мысли
РЕДАКТИРОВАТЬ - После некоторых ответов и комментариев кажется, что модульные тесты действительно единственный способ достичь этой функции.
Что я хотел бы знать, так это то, что если бы модульные тесты были - по какой-либо причине - невозможны, и, следовательно, IoC не мог быть протестирован во время компиляции, это помешало бы вам использовать контейнер IoC и выбрать прямую инстанцию по вашему коду? Я имею в виду, считаете ли вы слишком небезопасным и рискованным использование IoC и позднего связывания, и видите, что его преимущества перевешиваются этим «недостатком»?