您好我正在使用 Spring Boot,我想在 Bean 中注入(inject) .yml 文件的值。我已经编写了集成测试用例,但看起来通过集成测试用例它没有注入(inject)值。
问题是 url 的值和 keyspaceApp 为空
bean
@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
最佳答案
这是我如何让它工作的:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(initializers=ConfigFileApplicationContextInitializer.class)
public class MyTestClass {
@Autowired
private ConfigurableApplicationContext c;
@Test
public void myTestMethod() {
String value = c.getEnvironment().getProperty("myapp.property")
...
}
}
关于Spring boot,通过集成测试用例读取 yml 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27390085/