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

标签 spring spring-boot

您好我正在使用 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/

相关文章:

java - Spring 数据休息: Return One-To-Many-To-One as Many-To-Many relation

java - Spring Controller 不支持ServerHttpRequest

java - 带 Spring 启动的 Keyvault MSI : How to config keyvault to use Azure cli credentials instead of managed identity while running on local?

java - Spring-Boot 和 Kafka : How to handle broker not available?

java - 如何使用注释创建一个包含原型(prototype) bean 实例的列表?

java - Spring Data Cassandra - 使用 CqlOperations 运行任意 CQL

java - 如何为 Spring Boot 应用程序配置端口

spring - 如果使用 spring 平台 bom,是否应该使用父级?

java - 如何在 spring boot jpa 中使用外部 id 作为主要 id?

java - 无法在 @RestController 中 Autowiring 字段