背景
单测的例子仅涉及属性文件的加载,不涉及数据库等,所以不希望启动整个spring boot环境
样例
-
代码如下:
// 脱离springboot启动环境如何加载属性文件
@Import
(value = {TestProperties.
class
})
@EnableConfigurationProperties
@ContextConfiguration
(initializers = ConfigFileApplicationContextInitializer.
class
)
// 指定属性文件名字(可逗号分隔写多个)
@TestPropertySource
(properties = {
"spring.config.name=test"
})
@ExtendWith
(SpringExtension.
class
)
public
class
NonBootButLoadPropertiesTest {
@Autowired
private
TestProperties testProperties;
@Test
public
void
test() {
Assert.assertEquals(
"frsh"
, testProperties.getValue());
}
}
说明:
- @TestPropertySource(properties = {"spring.config.name=test"}) 用于指定属性文件的名字,可用逗号分隔,书写多个
- @ContextConfiguration(initializers = ConfigFileApplicationContextInitializer.class) spring-test包下专门放出的init处理器,用以调用springboot启动过程中的属性文件加载过程
-
@EnableConfigurationProperties是将加载到的属性映射到具体的bean上
-
属性类
@Data
@Configuration
@ConfigurationProperties
(prefix =
"test"
)
public
class
TestProperties {
private
String value;
}
-
配置文件内容
test:
value: ttttttt