spring 测试@Value 未被填充
spring test @Value not being populated
我正在尝试 运行 在 spring-test 中进行单元测试,但我无法将 @Value 填充到 Injected 类 中。我看起来像这样。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {
RelationshipCacheFactoryImpl.class,
IgniteBoot.class,
ServerMarker.class})
@TestPropertySource("classpath:test.properties")
public class RelationshipCacheFactoryImplTest {
...
所以在我的 IgniteBoot class 我有这个
@Component
public class IgniteBoot {
Logger logger = LoggerFactory.getLogger(IgniteBoot.class);
@Autowired
ApplicationContext context;
@Autowired
IgniteClientConfig clientConfig;
@Value("${ignite.tcp.finder:MULTICAST}")
String tcpFinder;
@Value("${ignite.tcp.finder.sharedfs.path:/tmp}")
String fsFinderPath;
@Value("${ignite.name:tempGrid}")
String name;
@Value("${ignite.roles:testRole}")
String roles;
@Value("${ignite.h2Debug:false}")
String h2DebugStr;
...
@Value 注释的字符串都填充了 $Value 字符串中的值,而不是属性文件中的实际值。
知道这可能是什么吗?
您需要将 PropertySourcesPlaceholderConfigurer
添加到您的测试配置中:
@Bean
public static PropertySourcesPlaceholderConfigurer propertyConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
在您的测试中,您没有使用 @EnableAutoConfiguration
(单独或隐含地作为 @SpringBootApplication
的一部分)在应用程序中为您注册此 bean,因此您需要自己注册。
我正在尝试 运行 在 spring-test 中进行单元测试,但我无法将 @Value 填充到 Injected 类 中。我看起来像这样。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {
RelationshipCacheFactoryImpl.class,
IgniteBoot.class,
ServerMarker.class})
@TestPropertySource("classpath:test.properties")
public class RelationshipCacheFactoryImplTest {
...
所以在我的 IgniteBoot class 我有这个
@Component
public class IgniteBoot {
Logger logger = LoggerFactory.getLogger(IgniteBoot.class);
@Autowired
ApplicationContext context;
@Autowired
IgniteClientConfig clientConfig;
@Value("${ignite.tcp.finder:MULTICAST}")
String tcpFinder;
@Value("${ignite.tcp.finder.sharedfs.path:/tmp}")
String fsFinderPath;
@Value("${ignite.name:tempGrid}")
String name;
@Value("${ignite.roles:testRole}")
String roles;
@Value("${ignite.h2Debug:false}")
String h2DebugStr;
...
@Value 注释的字符串都填充了 $Value 字符串中的值,而不是属性文件中的实际值。
知道这可能是什么吗?
您需要将 PropertySourcesPlaceholderConfigurer
添加到您的测试配置中:
@Bean
public static PropertySourcesPlaceholderConfigurer propertyConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
在您的测试中,您没有使用 @EnableAutoConfiguration
(单独或隐含地作为 @SpringBootApplication
的一部分)在应用程序中为您注册此 bean,因此您需要自己注册。