2015-12-09 2 views
1

Я пытаюсь запустить модульные тесты в весеннем тесте, и я не могу заставить @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 аннотированных Строк заполняются все значения в $ строкового значения, но не фактические значения из файла свойств.

Любая идея, что это может быть?

ответ

1

Вам нужно добавить PropertySourcesPlaceholderConfigurer к вашей тестовой конфигурации:

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

В тесте вы не используете @EnableAutoConfiguration (separetly или неявно, как часть @SpringBootApplication), который регистрирует этот компонент для вас в приложении, так вам необходимо зарегистрировать его самостоятельно.

Смежные вопросы