spring 测试@Value 未被填充

spring test @Value not being populated

我正在尝试 运行 在 spring-test 中进行单元测试,但我无法将 @Value 填充到 Injected 类 中。我看起来像这样。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {
    RelationshipCacheFactoryImpl.class,
    IgniteBoot.class,
    ServerMarker.class})
@TestPropertySource("classpath:test.properties")
public class RelationshipCacheFactoryImplTest {
...

所以在我的 IgniteBoot class 我有这个

@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 字符串中的值,而不是属性文件中的实际值。

知道这可能是什么吗?

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

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

在您的测试中,您没有使用 @EnableAutoConfiguration(单独或隐含地作为 @SpringBootApplication 的一部分)在应用程序中为您注册此 bean,因此您需要自己注册。