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
。