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



在单元测试执行过程中,我试图从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

应用程序测试.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注释

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"
}

最新更新