【发布时间】:2019-07-18 14:44:37
【问题描述】:
我使用 Spring,并创建了一个使用 SpringRunner 加载上下文的测试。
我有一个看起来像这样的 bean:
@Bean
public Properties kafkaStreamsProperties(){
final Properties props = new Properties();
props.put("A", "B");
props.put("C", "D");
return props;
}
我想在我的测试中扩展它以包含一个属性“E”-->“F”。
我可以在内部 @TestConfiguration 类中轻松地做到这一点,如下所示:
public class test{
public static class MyConfig{
@Bean
public Properties kafkaStreamsProperties(){
final Properties props = new Properties();
props.put("A", "B");
props.put("C", "D");
props.put("E", "F");
return props;
}
}
}
但是当我更改生产代码时,我也必须“记住”更改测试。有什么办法可以从上下文中获取实际的 bean 并用我的“替换”它(使用实际的)?
【问题讨论】:
-
我认为您可以使用@EnableConfigurationProperties,这样您就可以从测试以及主应用程序中获得相同的属性。
-
如果您只想更改属性,您也可以覆盖测试中所需的属性,例如:
@TestPropertySource(properties = {"A=B", "C=D", "E=F"})
标签: java spring spring-boot spring-test spring-bean