找不到NUnit类的My Spring.Net上下文文件。我的问题是我在哪里放置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包一样,所以我有点困惑。谢谢你的帮助。
答案 0 :(得分:0)
要使用Spring.Net设置Nunit,您需要:
设置开发环境:安装Nunit测试适配器。
设置项目:添加一个nunit引用和Spring.Net Nunit Reference。
您的测试必须来自AbstractDependencyInjectionSpringContextTests类。
使用您的嵌入式资源路径实现ConfigLocations属性。确保此路径是无法配置该路径的最常见错误因素。
`
string resourcePath = string.Format( "assembly://{0}/{1}/{2}.xml"
, currentType.Assembly.GetName().Name
, currentType.Namespace
, currentType.Name);
`
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,
}
}
`
最好的问候