2011-07-26 34 views
0

我们有如下的项目布局。项目布局和弹簧测试支持问题

SRC

的src/test/java下

的src /测试/资源

,我们不能添加的src/main /(Java,资源)的代码,因为原先所做的更新发育的。

的src /测试/ Java是具有在相同的封装两个单元和集成测试作为被测类在src文件夹。

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

集成测试运行完全正常时的测试类和配置文件一起端类测试,在src文件夹和相同的包类。

但是当我把测试类放在src /测试/ java和配置文件放在src /测试/资源测试失败,因为上下文初始化问题上运行。

请注意以下有关ENV设置

1生成输出文件夹的所有SRC,SRC /测试/ JAVA和src /测试/资源只有src文件夹。

2我使用的classpath *:指定配置的位置,否则春天未能找到资源文件夹中的配置文件。

@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. 

请expalin什么,可能使问题和任何解决方案。

正如一切,当集成测试是在src文件夹旁边类测试工作正常。
当spring创建上下文作为测试下的类与测试不在同一个源文件夹中时,我怀疑不同的源文件夹(src和test)产生问题。

感谢 nBhati

回答

1

在运行时Spring不关心(或不知道)的文件夹中的原始源代码是在要紧的是类路径 - 这编译的文件和资源文件夹被投入在类路径上。如果您在运行测试时遇到无法找到的XML文件错误,那么强烈建议在测试运行时这些XML文件不在类路径中。

+0

嗨马特,问题只与classpath有关。 1>我使用eclipse构建项目,并且它不在src/test/resources中复制资源以输出文件夹(src)。任何解决此问题的方法2>如果您可以解释classpath * :,它使Spring的查找资源的方式有什么区别@ContextConfiguration(locations = {“classpath *:applicationContext_getCorpAcctPrefDetailsS​​P.xml”})谢谢 – nBhati