2013-11-07 5 views
3

мы используем Autofac в качестве нашего контейнера для инъекции зависимостей. Мы хотели бы проверить различные вещи, используя NDepend, чтобы гарантировать, что наш DI настроен правильно и не используется неправильно (у нас очень большое решение).Как создать пользовательское правило NDepend для проверки регистраций DI

В модульное тестирование, я мог бы принять такой подход:

private static IEnumerable<TestCaseData> TestCases 
{ 
    get 
    { 
     return from registration in Container.Value 
      .ComponentRegistry.Registrations 
       from service in registration.Services 
       where service is TypedService 
       orderby service.Description 
       select new TestCaseData(registration, service) 
        .SetName(service.Description); 
    } 
} 

потом:

[Test] 
[TestCaseSource("TestCases")] 
public void CanBeResolved(
    IComponentRegistration componentRegistration, 
    TypedService typedService) 
{ 
    using (var scope = Container.Value.BeginLifetimeScope()) 
     scope.Resolve(typedService.ServiceType); 
} 

Как я могу создать пользовательские правила в пределах NDepend для обеспечения того, чтобы все соответствующие типы регистрируются с Autofac контейнер?

Спасибо, Richard

+0

Эти регистрации часто очень динамичны по своему характеру, а это значит, что вам нужно запустить приложение, чтобы проверить, работает ли он (как и при модульном тесте). Однако NDepend использует статический анализ кода; он не запускает ваш код. Я не думаю, что вам удастся использовать NDepend (или любой статический инструмент анализа кода) для этого, или, по крайней мере, вы будете злоупотреблять инструментом и сделать себя необычайно жестким. – Steven

+0

Спасибо. В этом есть смысл. – Richard

+0

Но оставьте открытым вопрос. Мне интересно узнать, что такое г-н. NDepend (patrick) должен сказать об этом. – Steven

ответ

0

Из комментариев, я могу видеть, что я буду писать свои собственные интеграционные тесты, но надеюсь, что в будущем, чтобы это поддерживается в NDepend.

Смежные вопросы