我正在尝试在spring-test中运行单元测试,我无法在注入的类中填充@Value ..我看起来像这样。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {
RelationshipCacheFactoryImpl.class,
IgniteBoot.class,
ServerMarker.class})
@TestPropertySource("classpath:test.properties")
public class RelationshipCacheFactoryImplTest {
...
所以在我的IgniteBoot类中我有这个
@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 String中的值填充,但不包含属性文件中的实际值。
任何想法可能是什么?
答案 0 :(得分:2)
您需要将PropertySourcesPlaceholderConfigurer
添加到测试配置中:
@Bean
public static PropertySourcesPlaceholderConfigurer propertyConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
在您的测试中,您不能使用@EnableAutoConfiguration
(作为@SpringBootApplication
的一部分),在应用程序中为您注册此bean,因此您需要自己注册。< / p>