【问题标题】:project layout and spring-test support issues项目布局和弹簧测试支持问题
【发布时间】:2011-07-26 13:53:06
【问题描述】:

我们的项目布局如下。

src

src/test/java

src/test/resources

我们不能为代码添加 src/main/(java, resources),因为之前的开发已经完成。

src/test/java 与 src 文件夹中的被测类在同一个包中进行单元测试和集成测试。

单元测试在当前设置中运行良好,但运行集成测试时出现问题。

当测试类和配置文件在被测类旁边时,集成测试运行得非常好,在 src 文件夹和与类相同的包中。

但是当我将测试类放在 src/test/java 和 src/test/resources 中的配置文件时,由于上下文初始化问题,测试无法运行。

请注意以下有关环境设置的信息

所有 src 、 src/test/java 和 src/test/resources 的 1 个构建输出文件夹仅是 src 文件夹。

2 我正在使用 classpath*: 来指定配置位置,否则 spring 无法在资源文件夹中找到配置文件。

@ContextConfiguration(locations={"classpath*:applicationContext_getCorpAcctPrefDetailsSP.xml"})

3 为测试类尝试了基于 @Autowired 和 setter 的 DI

   > (i). in case of  @Autowired i get error for depedency saying  
       No unique bean of type GetCorpAccountPreferencesDetailsSP is defined expected at least 1 matching bean 
     also i am using base package scan

   > (ii). in case of Setter based DI context get initialized and unit test run but   all the dependencies injected are null in test class.

请说明问题的原因和解决方案。

当集成测试在 src 文件夹中与被测类一起时,一切正常。
我怀疑当弹簧创建上下文时不同的源文件夹(src 和测试)创建问题,因为被测类与测试不在同一源文件夹中。

谢谢 nBhati

【问题讨论】:

    标签: java dependency-injection junit classpath spring-test


    【解决方案1】:

    在运行时,Spring 并不关心(或知道)您的原始源代码在哪个文件夹中。重要的是类路径 - 哪些已编译文件以及哪些资源文件夹被放置在类路径中。如果您在运行测试时收到有关无法找到 XML 文件的错误,这强烈表明这些 XML 文件在测试运行时不在类路径中。

    【讨论】:

    • 嗨,马特,问题仅与类路径有关。 1>我正在使用eclipse构建项目,它没有将src/test/resources中的资源复制到输出文件夹(src)。任何解决这个问题的方法 2> 如果你能解释 classpath*:,那么 spring 寻找资源的方式有什么不同 @ContextConfiguration(locations={"classpath*:applicationContext_getCorpAcctPrefDetailsS​​P.xml"}) 谢谢
    猜你喜欢
    • 2016-07-17
    • 2018-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-18
    • 2012-11-02
    • 2015-12-29
    相关资源
    最近更新 更多