Java 如何使用JUnit在Spring中测试ConfigurationProperties?

Java 如何使用JUnit在Spring中测试ConfigurationProperties?,java,spring,junit,spring-test,Java,Spring,Junit,Spring Test,我有一个ConfigurationProperties类,希望使用junit对其进行测试。但是对象总是null。以下代码中可能缺少什么 @EnableAutoConfiguration @ComponentScan @EnableConfigurationProperties(MyProperties.class) public class AppConfig { } @Service public class MyService { @Autowired private M

我有一个
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
}
应用程序。属性:

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();
    }
}
测试:

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();
    }
}

以下内容将为您加载它:

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

在当前的Spring启动版本中,不推荐使用
ConfigFileApplicationContextInitializer
,但在文档中,他们说我们应该使用
ConfigDataApplicationContextInitializer