我们的项目布局如下。
源代码
源/测试/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