- 如何脱离Spring boot环境(非@SpringbootTest)加载application.properties/yml
import org.junit.Assert; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.test.context.ConfigFileApplicationContextInitializer; import org.springframework.context.annotation.Import; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit.jupiter.SpringExtension; // 脱离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()); } }
@Getter @Setter @Configuration @ConfigurationProperties(prefix = "test") public class TestProperties { private String value; }
test: value: test-val
说明:
-
SpringExtension是spring-test包下,启动Spring容器环境的注解
-
@TestPropertySource(properties = {"spring.config.name=test"})是指定将要加载的属性文件的名字
-
@ContextConfiguration(initializers = ConfigFileApplicationContextInitializer.class)是spring-test包下,为了加载属性文件专门的启动器
-
同样,@EnableConfigurationProperties不能缺少,包含解析上一步加载过来的文件内容到bean的属性中的处理器(应用binder将属性绑定到bean中)
-
-
Spring:单测及各种问题集锦
最新推荐文章于 2024-07-04 09:39:38 发布