【问题标题】:Spring Boot 2.1 : Not loading property from application-test.ymlSpring Boot 2.1:不从 application-test.yml 加载属性
【发布时间】:2019-01-08 01:44:13
【问题描述】:

我试图在执行单元测试期间从 application-test.yml 读取属性,但取而代之的是从 application-dev.yml 读取属性。我没有 application.yml 文件。感谢您的帮助。

AppProperties.java

@Component
@ConfigurationProperties(prefix="app")
public class AppProperties {

    private String test;    

    public String getTest() {
        return this.test;
    }

    public void setTest(String test) {
        this.test = test;
    }
}

application-dev.yml

spring:
  profiles: dev
  application:
    name: testApplication
app:
  test: 1

application-test.yml

spring:
  profiles: test
  application:
    name: testApplication
app:
  test: 2

AppServiceTest.java

@RunWith(SpringRunner.class)
@ContextConfiguration(classes = {AppProperties.class}, initializers= ConfigFileApplicationContextInitializer.class)
@EnableConfigurationProperties
@ActiveProfiles("test")
public class AppServiceTest{

@Autowired
AppProperties appProperties;

@Test
public void test(){    
    appProperties.getTest();  
    //This returns "1" instead of the desired "2"
}

【问题讨论】:

  • 尝试用@SpringBootTest注释AppServiceTest

标签: java spring-boot


【解决方案1】:

在单元测试类上使用@SpringBootTest注解

Spring Boot 提供了一个 @SpringBootTest 注解,当您需要 Spring Boot 功能时,可以将其用作标准 spring-test @ContextConfiguration 注解的替代品。注释通过 SpringApplication 创建测试中使用的 ApplicationContext 来工作。除了 @SpringBootTest 之外,还提供了许多其他注释来测试应用程序的更具体的切片。

@RunWith(SpringRunner.class)
@ContextConfiguration(classes = {AppProperties.class}, initializers= 
ConfigFileApplicationContextInitializer.class)
@EnableConfigurationProperties
@SpringBootTest
@ActiveProfiles("test")
public class AppServiceTest{

@Autowired
AppProperties appProperties;

@Test
public void test(){    
appProperties.getTest();  
//This returns "1" instead of the desired "2"
 }

【讨论】:

  • 谢谢!正是我需要的
猜你喜欢
  • 2021-07-15
  • 2017-11-17
  • 2014-12-21
  • 2019-10-18
  • 2018-06-25
  • 1970-01-01
  • 1970-01-01
  • 2019-08-09
  • 2020-04-14
相关资源
最近更新 更多