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