Как выполнить внедрение зависимостей в тестовом проекте (TFS 2008) с помощью Castle

StackOverflow https://stackoverflow.com/questions/101363

Вопрос

Я использую 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:Название типа пример2008.Repository.lalalalala, example2008.Repository не может быть обнаружен.

Castle.Windsor.Installer.DefaultComponentInstaller.ObtainType(String typeName) Castle.Windsor.Installer.DefaultComponentInstaller.SetUpComponents(IConfiguration[] configurations, IWindsorContainer container) Castle.Windsor.Installer.DefaultComponentInstaller.SetUp(IWindsorContainer container, IConfigurationStore store) Castle.Windsor .Windsorcontainer.runinstaller () castle.windsor.windsorcontainer..ctor (IconfigurationInterpreter Interpreter) Пример2008.test.activeProductrepositorytest..cctor () в D: code_temp Пример Projectly Seurnces2008.test upporttestesttestestestestestestestestestestestestestestestestestestestestestestestestestestestestestestestestestestestestestestestestestestestestestestestestestestestestestestestestestestestestestestest.строка 19

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

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

Есть предположения?

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

Это было полезно?

Решение

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

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top