Весенний тест @ Значение не заселено

Я пытаюсь запустить модульные тесты в Spring-Test, и я не могу получить @Value для заполнения в Injected Classes.. Мой выглядит так.

@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, но не фактическими значениями из файла свойств.

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

1 ответ

Решение

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

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

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

Другие вопросы по тегам