【问题标题】:How to test ConfigurationProperties in Spring with JUnit?如何使用 JUnit 在 Spring 中测试 ConfigurationProperties?
【发布时间】:2015-03-12 09:41:55
【问题描述】:

我有一个ConfigurationProperties 类,并想使用junit 对其进行测试。但对象始终是null。以下代码中可能缺少什么?

@EnableAutoConfiguration
@ComponentScan
@EnableConfigurationProperties(MyProperties.class)
public class AppConfig {

}

@Service
public class MyService {
    @Autowired
    private MyProperties props;

    public void run() {
        props.getName();
    }
}

@Component
@ConfigurationProperties(prefix = "my")
public class MyProperties {
    private String name;
    //getter,setter
}

application.properties:

my.name=test

测试:

@Configuration
@ComponentScan(basePackageClasses = {MyService.class,  MyProperties.class},
            includeFilters = @ComponentScan.Filter(value = {MyService.class,  MyProperties.class},
            type = FilterType.ASSIGNABLE_TYPE),
            lazyInit = true
)
@PropertySources(
        @PropertySource("application.properties")
    )
class AppTest {
    @Bean
    public static PropertySourcesPlaceholderConfigurer propertiesResolver() {
        return new PropertySourcesPlaceholderConfigurer();
    }
}

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = ApplicationConfigTest.class)
public class MyTest extends AbstractJUnit4SpringContextTests {
    @Autowired
    private MyService service;

    @Test
    public void testService() {
        service.run();
    }
}

【问题讨论】:

    标签: java spring junit spring-test


    【解决方案1】:

    以下内容将为您加载:

    @ContextConfiguration(classes = Application.class, initializers = ConfigFileApplicationContextInitializer.class)
    

    【讨论】:

    • 在当前的 Spring Boot 版本中,ConfigFileApplicationContextInitializer 已被弃用,但在文档中他们说我们应该改用 ConfigDataApplicationContextInitializer
    猜你喜欢
    • 2020-03-30
    • 2022-01-13
    • 2018-07-16
    • 1970-01-01
    • 2012-10-24
    • 2015-12-29
    • 1970-01-01
    • 2014-03-19
    • 1970-01-01
    相关资源
    最近更新 更多