【发布时间】: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