Конфигурация Castle Windsor для нескольких проектов и модульное тестирование - PullRequest
0 голосов
/ 24 октября 2011

У меня есть решение с несколькими проектами, и один из этих проектов - мой класс обслуживания, который вызывает диспетчер сохраняемости.

Я хотел бы написать модульный тест следующим образом:

 [Test]
    public void Create_HappyPath_Success()
    {
        // Arrange
        UnitOfMeasure unitOfMeasure = new UnitOfMeasure();
        unitOfMeasure.Code = "Some new unit of measure";
        unitOfMeasure.DataOwner = 1;

        // Act
        this.UoMService.Create(unitOfMeasure);  // Fails here as UoMService is null

        // Assert something

    }

Теперь я получаю исключение нулевой ссылки в этой строке:

 this.UoMService.Create(unitOfMeasure);  // Fails here as UoMService is null

Я полагаю, что это связано с тем, что замок Виндзор не вызывается и, следовательно, UoMService не получает экземпляр. Мой установщик приложения Castle Windsor определен в другом проекте, т.е. в моем проекте ASP.NET MVC. Итак, мой первый вопрос: можно ли повторно использовать этот установщик для запуска моих модульных тестов.

Теперь, чтобы обойти эту проблему, я создал новый установщик в своем проекте модульного тестирования, связавшись с установщиком в моем веб-проекте. Затем я использовал следующий код в моей настройке:

  [SetUp]
    public void ControllersInstallerTests()
    {
        this.containerWithControllers = new WindsorContainer();
        IoC.Initialize(this.containerWithControllers);

        this.containerWithControllers.Install(FromAssembly.This());
    }

На этот раз, когда я запускаю тесты, я получаю следующую ошибку:

SetUp: Castle.Windsor.Configuration.Interpreters.XmlProcessor.ConfigurationProcessingException: ошибка обработки ресурса узла FileResource: [] [] ----> Castle.Core.Resource.ResourceException: файл C: \ Projects \ DavidPM \ Services \ MyProject.Services.ServiceImpl.Test.Unit \ bin \ Debug \ Config \ Windsor.config не найден

Вопрос в том, почему он смотрит в папку bin \ Debug?

Будучи новичком в Castle Windsor, я не уверен, что мне следует делать, чтобы подключиться к Castle Windsor для моих юнит-тестов.

Ответы [ 2 ]

1 голос
/ 24 октября 2011

Вы должны , а не подключать свой контейнер IoC в своих модульных тестах. Во время производства ваш контейнер IoC разрешит зависимости. Во время модульных тестов вы создаете зависимости как часть ваших тестов - обычно с использованием фальшивой среды, чтобы вы могли проводить тестирование изолированно.

0 голосов
/ 08 января 2014

сделать копию вашего конфигурационного файла в выходной каталог

...