Как сделать Dependency Injection в тестовом проекте (TFS 2008) с использованием Castle

Я использую 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 (имя типа строки) Castle.Windsor.Installer.DefaultComponentInstaller.SetUpComponents(конфигурации IConfiguration[], контейнер IWindsorContainer).WindsorContainer.RunInstaller() Castle.Windsor.WindsorContainer..ctor(интерпретатор IConfigurationInterpreter) Example2008.Test.ActiveProductRepositoryTest..cctor() в d:\Code_Temp\Example Project Nightly\Sources\Example2008.Test\ProductRepositoryTest.cs: строка 19

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

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

Какие-нибудь мысли?

(используя VS2008, TFS 2008.Net 3.5, Castle 1.03, кстати)

2 ответа

Решение

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

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

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

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

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

Другие вопросы по тегам