Как сделать Dependency Injection в тестовом проекте (TFS 2008) с использованием Castle - PullRequest
1 голос
/ 19 сентября 2008

Я использую Castle Windsor для внедрения зависимостей в моем тестовом проекте. Я пытаюсь создать экземпляр одного из моих классов «Репозиторий». «Он отлично работает на моей машине», но когда я запускаю ночную сборку в TFS, мои тесты не могут загрузить указанные классы.

private static readonly WindsorContainer _container = new WindsorContainer(new XmlInterpreter());


    public void MyTestInitialize()
    {
        var testRepository = (IBogusRepository)_container[typeof(IBogusRepository)];

    }

XML-конфигурация:

<castle>
    <components>
      <component id="primaryBogusRepository" type="Example2008.Repository.LALALALALA, Example2008.Repository" service="Example2008.Domain.Repository.IBogusRepository, Example2008.Domain" />
      <component id="primaryProductRepository" type="Example2008.Repository.ProductRepository, Example2008.Repository" service="Example2008.Domain.Repository.IProductRepository, Example2008.Domain" />
    </components>
  </castle>

Когда я ставлю в очередь новую сборку, она производит следующее сообщение:

Невозможно создать экземпляр класса Example2008.Test.ActiveProductRepositoryTest. Ошибка: System.Configuration.ConfigurationException: Имя типа Example2008.Repository.LALALALALA, Example2008.Repository не может быть расположен.

Castle.Windsor.Installer.DefaultComponentInstaller.ObtainType (String TYPENAME) Castle.Windsor.Installer.DefaultComponentInstaller.SetUpComponents (наследуют IConfiguration [] конфигурации, IWindsorContainer контейнер) Castle.Windsor.Installer.DefaultComponentInstaller.SetUp (IWindsorContainer контейнер, магазин IConfigurationStore) Castle.Windsor.WindsorContainer.RunInstaller () Castle.Windsor.WindsorContainer..ctor (IConfigurationInterpreter переводчик) Example2008.Test.ActiveProductRepositoryTest..cctor () в d: \ Code_Temp \ Пример проекта Nightly \ Sources \ Example2008.Test \ ProductRepositoryTest.cs: строка 19

Из этого сообщения кажется, что моя конфигурация верна (видно, что я хочу создать экземпляр конкретного класса 'LALALALALA', поэтому конфигурация xml, очевидно, была правильно выделена красным цветом)

Я думаю, что мои зависимости также настроены правильно (потому что это работает локально, даже если я очищаю решение и перестраиваю).

Есть мысли?

(кстати, VS2008, TFS 2008.Net 3.5, Castle 1.03)

Ответы [ 2 ]

0 голосов
/ 25 сентября 2008

Это ... интересно. Я нашел это сообщение в блоге, которое может помочь в вашей проблеме. Похоже, MSTest использует это в качестве своего рабочего каталога, что раздражает, если не сказать больше. В сообщении блога показано, как изменить каталог, чтобы вы могли получать согласованные результаты. Я также хотел бы сделать поиск в Google, чтобы выяснить, существует ли более элегантное решение.

0 голосов
/ 19 сентября 2008

Похоже, что сборка, которая содержит реализации репозитория, отсутствует в каталоге bin (или там, где ваш исполняющий каталог для сборки).

Сначала я бы проверил, существует ли сборка в каталоге выполнения сервера сборки.

Если она существует, то я бы проверил, чтобы убедиться, что версия сборки правильная, то есть имеет реализацию репозитория в том же пространстве имен и т. Д.

Возможно, ваш сервер сборки выполняет / строит объекты где-то еще, а не там, где VS выполняет / строит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...