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