我有一个maven模块库,可以作为外部依赖项包含在任何spring引导应用程序中( @SpringBootApplication
)版本2.3.0。这个库模块显然没有自己的 @SpringBootApplication
但是,它确实包含 @Configuration
从src/main/resources/lib.properties加载属性的。这就是 @Configuration
类定义为:
@Configuration
@PropertySource({"classpath:lib.properties"})
public class MyLibConfig {
@Value("${my.property.name}")
private String myPropertyVal;
@Bean("myBean")
public List<String> propertyVal() { /* create a bean */ }
}
现在,我用这个豆子( myBean
)在另一个 @Component
班级 lib
模块,并希望对其进行单元测试 @Component
. 问题是,既然我没有 @SpringBootApplication
在这个 lib
我认为springboot测试应用程序上下文不知道如何从 @Configuration
,因此以下无法注入 myBean
进入 @Component
豆子:
@Component
public class MyComponent {
@Autowired
@Qualifier("MyBean")
private List<String> myBean;
}
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = {MyComponent.class, MyLibConfig.class} )
// @TestPropertySource("classpath:lib-test.properties")
public class MyComponentTest {
@Autowired
private MyComponent myComponent;
}
我该如何处理这个问题?
更新-已解决
所以问题是 @Qualifier
价值观是错误的。一旦纠正了,我就 @TestPropertySource
不加注解,我可以
@Autowired myBean
并使用 lib-test.properties
在单元测试期间:
@Component
public class MyComponent {
@Autowired
@Qualifier("myBean") // This had been misspelled "MyBean"
private List<String> myBean;
}
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = {MyComponent.class, MyLibConfig.class} )
@TestPropertySource("classpath:lib-test.properties") // Test context uses values from this properties file
public class MyComponentTest {
@Autowired
private MyComponent myComponent;
@Autowired
@Qualifier("myBean")
private List<String> myBean;
}
暂无答案!
目前还没有任何答案,快来回答吧!