Spring Boot 2.1:未从 application-test.yml 加载属性

Zac*_*cus 7 java spring-boot

我试图在我的单元测试执行期间从 application-test.yml 读取一个属性,但相反,正在读取 application-dev.yml 中的属性。我没有 application.yml 文件。感谢帮助。

应用属性.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;
    }
}
Run Code Online (Sandbox Code Playgroud)

应用程序-dev.yml

spring:
  profiles: dev
  application:
    name: testApplication
app:
  test: 1
Run Code Online (Sandbox Code Playgroud)

应用程序-test.yml

spring:
  profiles: test
  application:
    name: testApplication
app:
  test: 2
Run Code Online (Sandbox Code Playgroud)

应用服务测试.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"
}
Run Code Online (Sandbox Code Playgroud)

Dea*_*ool 9

@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"
 }
Run Code Online (Sandbox Code Playgroud)