【发布时间】:2019-11-15 06:21:14
【问题描述】:
我正在测试一个具有@Qualified @Autowired 值的类:
// class under test
class C1() {
@Autowired
@Qualified("c1")
DataSource d1;
...
}
DataSource d1 位于配置文件中。
但是当我测试同一个类并且我使用单独的DataSource 时,它位于测试配置类中:
// test for class
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = testC1Config.class, loader=AnnotationConfigContextLoader.class)
class testC1() {
@Autowired
@Qualified("c1Test")
DataSource d1Test;
...
}
// testC1Config
@Configuration
class testC1Config() {
@Bean
@Qualified("c1Test")
DataSource c1Test() {
...
}
}
我得到了这个例外:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [javax.sql.DataSource] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true), @org.springframework.beans.factory.annotation.Qualifier(value=c1)}
说他只看到只有限定符c1 的DataSource Bean。尝试使用@Bean(name=c1Test"),但我得到相同的结果..
如何让他看到测试包中的 c1Test DataSource bean?
【问题讨论】:
-
@user7294900 我的错,我的 testConfig 文件中有
@Qualifier用于此方法。它仍然说他只看到c1 -
在 bean 定义中尝试
@Bean(name = "c1Test")而不是@Qualified("c1Test")。
标签: java spring spring-boot junit annotations