Мой контекстный файл 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, поэтому я немного запутался. Спасибо за любую помощь.
Ответ 1 · Community
Чтобы настроить Nunit с помощью Spring.Net, вам потребуется:
Настройте среду разработки: установите тестовый адаптер Nunit.
Настройте свой проект: добавьте ссылку на nunit и ссылку на Spring.Net Nunit.
Ваш тест должен быть производным от класса AbstractDependencyInjectionSpringContextTests.
Реализуйте свойство ConfigLocations, чтобы получить путь к встроенному ресурсу. Убедитесь, что этот путь является наиболее частым фактором ошибки, который не удается настроить.
`
string resourcePath = string.Format( "assembly://{0}/{1}/{2}.xml"
, currentType.Assembly.GetName().Name
, currentType.Namespace
, currentType.Name);
`
- В классе конструктора вы можете выбрать автопроводку, установив свойство 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,
}
}
`
- Я использую ByName. Он представляет, какое имя определенного объекта в Spring.Net XML должно точно совпадать с именем моего свойства. Чтобы упростить настройку, используйте псевдоним для повторного использования собственных конфигураций в тестах.
Наилучшие пожелания