0

我们的项目布局如下。

源代码

源/测试/java

源/测试/资源

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

src/test/java 在与 src 文件夹中的被测类相同的包中具有单元测试和集成测试。

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

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

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

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

1 为所有 src 、 src/test/java 和 src/test/resources 构建输出文件夹只是 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

4

1 回答 1

1

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

于 2011-07-26T13:59:22.143 回答