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