弹簧测试@Value没有被填充

时间:2015-12-09 20:48:05

标签: spring spring-boot spring-test

我正在尝试在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中的值填充,但不包含属性文件中的实际值。

任何想法可能是什么?

1 个答案:

答案 0 :(得分:2)

您需要将PropertySourcesPlaceholderConfigurer添加到测试配置中:

        @Bean
        public static PropertySourcesPlaceholderConfigurer propertyConfigurer() {
            return new PropertySourcesPlaceholderConfigurer();
        }

在您的测试中,您不能使用@EnableAutoConfiguration(作为@SpringBootApplication的一部分),在应用程序中为您注册此bean,因此您需要自己注册。< / p>