SpringBoot单元测试@ConfigurationProperties?

yml配置文件中读取数据。
不想使用@SpringBootTest这么重的测试方式,还有没有其他代价比较小的方式,完成单测。

阅读 2.1k
1 个回答

已找到解决方案。

@ExtendWith(SpringExtension.class)
@EnableConfigurationProperties(CourseConfig.class)
@PropertySource(value = "classpath:application.yml", factory = YamlPropertySourceFactory.class)
class CourseConfigTest { }

这种即可,不过默认PropertySource只能解析properties这种配置文件。

import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
import org.springframework.core.env.PropertiesPropertySource;
import org.springframework.core.env.PropertySource;
import org.springframework.core.io.support.EncodedResource;
import org.springframework.core.io.support.PropertySourceFactory;

import java.io.IOException;
import java.util.Properties;

public class YamlPropertySourceFactory implements PropertySourceFactory {

    @Override
    public PropertySource<?> createPropertySource(String name, EncodedResource encodedResource) throws IOException {
        YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean();
        factory.setResources(encodedResource.getResource());

        Properties properties = factory.getObject();

        return new PropertiesPropertySource(encodedResource.getResource().getFilename(), properties);
    }
}

参考来源: https://www.baeldung.com/spri...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏