Расположение файла с использованием ресурса Assembly://

Мой контекстный файл Spring.Net для класса NUnit не найден. Мой вопрос: куда мне поместить файл контекста Spring.Net, чтобы его можно было найти с помощью теста NUnit? Я использую Spring.Net 1.3.2 (это версия по умолчанию для NuGet) и интеграцию Spring.Net с NUnit. Модульный тест не находит файл контекста, указанный с помощью AbstractDependencyInjectionSpringContextTests.

Это мой первый проект .Net, поэтому я, вероятно, упустил что-то основное. В моем решении мой основной проект C# будет иметь имя сборки/проекта MyAssembly. Затем я создал тестовый проект в том же решении с именем MyAssemply.Test. Первоначально я создал свой класс модульного теста и его контекстный файл в корневом каталоге проекта. Файл контекста помечен как встроенный ресурс и не копируется. URI ресурса — «assembly://MyAssembly.Test/MyNamespace/EmailManagerTestContext.xml». Я продолжаю получать нулевой указатель.

Поэтому я попытался использовать класс AssemblyResource без расширения класса Spring.Net AbstractDependencyInjectionSpringContextTests. Это также оказалось нулевым и не сказало мне, где он ожидал найти файл. Я также использовал Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) и обнаружил, что проект создается во временном каталоге на другом диске. Я попытался переместить XML-файл класса и контекста в папку с тем же именем, что и пространство имен, но это не сработало. Я видел несколько примеров, в которых структура каталогов не совпадает с пространством имен, как с пакетами Java, поэтому я немного запутался. Спасибо за любую помощь.


person user3161209    schedule 09.01.2014    source источник
comment
Трудно сказать, в чем ваша настоящая проблема. Одна вещь: временное местоположение, вероятно, является результатом настройки NUnit для теневого копирования тестовых сборок. Также: я не уверен насчет встроенных ресурсов. Возможно, это поможет: stackoverflow.com /вопросы/3314140/   -  person Dio F    schedule 10.01.2014
comment
Можете ли вы добавить свой файл конфигурации?   -  person Najera    schedule 14.01.2014


Ответы (1)


Чтобы настроить Nunit с помощью Spring.Net, вам потребуется:

  1. Настройте среду разработки: установите тестовый адаптер Nunit.

  2. Настройте свой проект: добавьте ссылку на nunit и ссылку на Spring.Net Nunit.

  3. Ваш тест должен быть производным от класса AbstractDependencyInjectionSpringContextTests.

  4. Реализуйте свойство ConfigLocations, чтобы получить путь к встроенному ресурсу. Убедитесь, что этот путь является наиболее частым фактором ошибки, который не удается настроить.

`

string resourcePath = string.Format( "assembly://{0}/{1}/{2}.xml"
, currentType.Assembly.GetName().Name
, currentType.Namespace
, currentType.Name);

`

  1. В классе конструктора вы можете выбрать автопроводку, установив свойство AutowireMode.

this.AutowireMode = Spring.Objects.Factory.Config.AutoWiringMode.ByName; и this.DependencyCheck = true;

`

namespace Spring.Objects.Factory.Config
{
    // Summary:
    //     The various autowiring modes.
    [Serializable]
    public enum AutoWiringMode
    {
        // Summary:
        //     Do not autowire.
        No = 0,
        //
        // Summary:
        //     Autowire by name.
        ByName = 1,
        //
        // Summary:
        //     Autowire by System.Type.
        ByType = 2,
        //
        // Summary:
        //     Autowiring by constructor.
        Constructor = 3,
        //
        // Summary:
        //     The autowiring strategy is to be determined by introspection of the object's
        //     System.Type.
        AutoDetect = 4,
    }
}

`

  1. Я использую ByName. Он представляет, какое имя определенного объекта в Spring.Net XML должно точно совпадать с именем моего свойства. Чтобы упростить настройку, используйте псевдоним для повторного использования собственных конфигураций в тестах.

Наилучшие пожелания

person Community    schedule 18.10.2014