1

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

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> 

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

Unable to create instance of class Example2008.Test.ActiveProductRepositoryTest. Error: System.Configuration.ConfigurationException: The type name Example2008.Repository.LALALALALA, Example2008.Repository could not be located.

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) Example2008.Test.ActiveProductRepositoryTest..cctor() in d:\Code_Temp\Example Project Nightly\Sources\Example2008.Test\ProductRepositoryTest.cs: line 19

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

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

Любые мысли?

(с помощью VS2008, TFS 2008.Net 3,5, Замок 1,03, кстати)

ответ

0

То есть ... интересный. Я нашел this blog post that may help your issue. Похоже, MSTest использует это как свой рабочий каталог, что, по меньшей мере, раздражает. Сообщение в блоге показывает, как изменить каталог, чтобы вы могли иметь последовательные результаты. Я также хотел бы кое-что сделать в Google, чтобы узнать, существует ли более элегантное решение.

0

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

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

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

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

+0

это звучит правдоподобно, но как его получить? в каком каталоге TFS выполняются его тесты? Я проверил, и DLL-хранилище, по-видимому, не развернуто на сервере \ Build_output \ Example Project Nightly_20080919.9 \ TestResults \ 9598f1df-cd1d-49b2-a915-4ee06532ef9f \ Out (в то время как остальные файлы), если он не будет скопирован там автоматически? (в конце концов, это ссылка на проект, а для копии local - значение true) – ampburner 2008-09-19 13:07:37