小编典典

Spring Boot,通过集成测试用例读取yml属性

spring-boot

嗨,我正在使用Spring Boot,我想将.yml文件的值注入Bean中。我已经编写了集成测试用例,但是通过集成测试用例看起来它没有注入值。

问题是网址的值和keyspaceApp为null

    @ConfigurationProperties(prefix="cassandra")
public class TestBean {

    @Value("${urls}")
    private String urls;

    @Value("${keyspaceApp}")
    private String app;

    public void print() {
        System.out.println(urls);
        System.out.println(app);
    }

    public String getUrls() {
        return urls;
    }

    public void setUrls(String urls) {
        this.urls = urls;
    }
}

集成测试用例

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = TestBean.class)
@IntegrationTest
public class CassandraClientTest {

    @Autowired
    private TestBean bean;

    @Test
    public void test() {
        bean.print();
    }
}

申请yml文件

cassandra:
  urls: lllaaa.com
  keyspaceApp: customer
  createDevKeyspace: true

阅读 405

收藏
2020-05-30

共1个答案

小编典典

试试这个:

@SpringApplicationConfiguration(classes = TestBean.class, initializers = ConfigFileApplicationContextInitializer.class)

从其JavaDocs:

* {@link ApplicationContextInitializer} that can be used with the
* {@link ContextConfiguration#initializers()} to trigger loading of
* {@literal application.properties}.

它说可以使用application.properties,但是我想它也可以使用application.yml

2020-05-30