使用assembly:// resource的文件位置

时间:2014-01-09 19:49:26

标签: xml configuration nunit config spring.net

找不到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包一样,所以我有点困惑。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

要使用Spring.Net设置Nunit,您需要:

  1. 设置开发环境:安装Nunit测试适配器。

  2. 设置项目:添加一个nunit引用和Spring.Net Nunit Reference。

  3. 您的测试必须来自AbstractDependencyInjectionSpringContextTests类。

  4. 使用您的嵌入式资源路径实现ConfigLocations属性。确保此路径是无法配置该路径的最常见错误因素。

  5. `

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

    `

    1. 在构造函数类上,您可以选择autowire设置AutowireMode属性。
    2. 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上定义对象的名称必须与我的属性名称完全匹配。要使配置更容易,请使用别名在测试中重用本机配置。
      2. 最好的问候